Forum Discussion
karunpoudel
3 years agoRegular Visitor
Query folding (Table.View) handler function to filter rows/add where clause
I am building a custom connector and need to implement query folding when filter is added. What is the On* handler function name and its parameters for this? Is there any documentation on this and all available handler functions?
These doc doesn't contain everything.
https://learn.microsoft.com/en-us/power-query/samples/trippin/10-tableview1/readme
https://learn.microsoft.com/en-us/power-query/power-query-folding
The handler is
OnSelectRows = (condition as function) => let ast = RowExpression.From(condition), ...We can convert the condition into abstract syntax tree (AST) using:
RowExpression.From(function as function) as recordExample:
ForTable.SelectRows(table, each [Metric1]>=2000 or [Metric1]=null or [Metric1]=[Metric2])AST is :
[ Kind = "Binary", Operator = "Or", Left = [ Kind = "Binary", Operator = "Or", Left = [ Kind = "Binary", Operator = "GreaterThanOrEquals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "Constant", Value = 2000 ] ] , Right = [ Kind = "Binary", Operator = "Equals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "Constant", Value = null ] ] ] , Right = [ Kind = "Binary", Operator = "Equals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "FieldAccess", MemberName = "Metric2", Expression = RowExpression.Row ] ] ]
2 Replies
Replies have been turned off for this discussion
- ppm1Solution Sage
Here is an article that may help explain further.
Pat
- karunpoudelRegular Visitor
The handler is
OnSelectRows = (condition as function) => let ast = RowExpression.From(condition), ...We can convert the condition into abstract syntax tree (AST) using:
RowExpression.From(function as function) as recordExample:
ForTable.SelectRows(table, each [Metric1]>=2000 or [Metric1]=null or [Metric1]=[Metric2])AST is :
[ Kind = "Binary", Operator = "Or", Left = [ Kind = "Binary", Operator = "Or", Left = [ Kind = "Binary", Operator = "GreaterThanOrEquals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "Constant", Value = 2000 ] ] , Right = [ Kind = "Binary", Operator = "Equals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "Constant", Value = null ] ] ] , Right = [ Kind = "Binary", Operator = "Equals", Left = [ Kind = "FieldAccess", MemberName = "Metric1", Expression = RowExpression.Row ] , Right = [ Kind = "FieldAccess", MemberName = "Metric2", Expression = RowExpression.Row ] ] ]