public void testIIF() { TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); sqlparser.sqltext = "select \n" + "iif([Measures].[Orders Count]<>0, \n" + " [Measures].[Unit Price BAD],\n" + " 0) on 1\n" + "from t"; int i = sqlparser.parse(); Assert.IsTrue(i == 0); TMdxSelect select = (TMdxSelect)sqlparser.sqlstatements.get(0); TMdxAxisNode axisNode = select.Axes[0]; TMdxFunctionNode functionNode = (TMdxFunctionNode)axisNode.ExpNode; Assert.IsTrue(functionNode.Arguments.Count == 3); for (int j = 0; j < functionNode.Arguments.Count; j++) { TMdxExpNode expNode = functionNode.Arguments[j]; // System.out.println(expNode.toString()); } }
public void testCreateMember() { TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); sqlparser.sqltext = "CREATE MEMBER CURRENTCUBE.Measures.[_Internet Current Quarter Sales Performance Status] \n" + "AS 'Case When IsEmpty(KpiValue(\"Internet Current Quarter Sales Performance\")) Then Null When KpiValue(\"Internet Current Quarter Sales Performance\") < 1 Then -1 When KpiValue(\"Internet Current Quarter Sales Performance\") >= 1 And KpiValue(\"Internet Current Quarter Sales Performance\") < 1.07 Then 0 Else 1 End', \n" + "ASSOCIATED_MEASURE_GROUP = 'Internet Sales';"; int i = sqlparser.parse(); Assert.IsTrue(i == 0); TMdxCreateMember createMember = (TMdxCreateMember)sqlparser.sqlstatements.get(0); TMdxWithMemberNode withMemberNode = createMember.Specification; string newQuery = "select " + TBaseType.getStringInsideLiteral(withMemberNode.ExprNode.ToString()) + " on 1 from t"; sqlparser.sqltext = newQuery; i = sqlparser.parse(); Assert.IsTrue(i == 0); //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); TMdxSelect select = (TMdxSelect)sqlparser.sqlstatements.get(0); TMdxAxisNode axisNode = select.Axes[0]; TMdxCaseNode caseNode = (TMdxCaseNode)axisNode.ExpNode; Assert.IsTrue(caseNode.WhenList.Count == 3); }