001package gudusoft.gsqlparser.stmt.dax; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlClause; 005import gudusoft.gsqlparser.ESqlStatementType; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.*; 008import gudusoft.gsqlparser.nodes.dax.TDaxVar; 009 010/** 011 * DAX Evaluate query. 012 * 013 * <pre> 014 * {@code 015 * [DEFINE { MEASURE <tableName>[<name>] = <expression> } 016 * EVALUATE <table> 017 * [ORDER BY {<expression> [{ASC | DESC}]}[,...] 018 * [START AT {<value>|<parameter>} [,...]]] 019 * } 020 * </pre> 021 */ 022public class TDaxEvaluateStmt extends TDaxStmt { 023 private TExpression tableExpr; 024 private TPTNodeList<TDaxVar> measureList; 025 026 public TPTNodeList<TDaxVar> getMeasureList() { 027 return measureList; 028 } 029 030 public void setTableExpr(TExpression tableExpr) { 031 this.tableExpr = tableExpr; 032 } 033 034 public void setOrderBy(TOrderBy orderBy) { 035 this.orderBy = orderBy; 036 } 037 038 public TOrderBy getOrderBy() { 039 040 return orderBy; 041 } 042 043 public TExpression getTableExpr() { 044 return tableExpr; 045 } 046 047 private TOrderBy orderBy; 048 049 public TDaxEvaluateStmt (EDbVendor dbvendor){ 050 super(dbvendor); 051 sqlstatementtype = ESqlStatementType.sstdaxevaluate; 052 } 053 054 055 public int doParseStatement(TCustomSqlStatement psql) { 056 if (rootNode == null) return -1; 057 super.doParseStatement(psql); 058 TDummy dummy = (TDummy)rootNode; 059 060 if (dummy.node3 != null){ 061 measureList = (TPTNodeList<TDaxVar>)dummy.node3; 062 for(int i=0;i<measureList.size();i++){ 063 measureList.getElement(i).doParse(this,ESqlClause.unknown); 064 } 065 } 066 067 tableExpr = (TExpression)dummy.node1; 068 orderBy = (TOrderBy)dummy.node2; 069 tableExpr.doParse(this, ESqlClause.unknown); 070 if (orderBy != null) orderBy.doParse(this,ESqlClause.unknown); 071 072 return 0; 073 } 074 075 076 private boolean startWithDefine = false; 077 078 public void setStartWithDefine(boolean startWithDefine) { 079 this.startWithDefine = startWithDefine; 080 } 081 082 public boolean isStartWithDefine() { 083 084 return startWithDefine; 085 } 086 087 public void accept(TParseTreeVisitor v){ 088 v.preVisit(this); 089 v.postVisit(this); 090 } 091 092 093 public void acceptChildren(TParseTreeVisitor v){ 094 v.preVisit(this); 095 v.postVisit(this); 096 } 097}