ExtractWindowExpressions Logical Resolution Rule¶
ExtractWindowExpressions
is a logical resolution rule that <
ExtractWindowExpressions
is part of the Resolution fixed-point batch in the standard batches of the Analyzer.
ExtractWindowExpressions
is simply a Catalyst rule for transforming logical plans, i.e. Rule[LogicalPlan]
.
import spark.sessionState.analyzer.ExtractWindowExpressions
// Example 1: Filter + Aggregate with WindowExpressions in aggregateExprs
val q = ???
val plan = q.queryExecution.logical
val afterExtractWindowExpressions = ExtractWindowExpressions(plan)
// Example 2: Aggregate with WindowExpressions in aggregateExprs
val q = ???
val plan = q.queryExecution.logical
val afterExtractWindowExpressions = ExtractWindowExpressions(plan)
// Example 3: Project with WindowExpressions in projectList
val q = ???
val plan = q.queryExecution.logical
val afterExtractWindowExpressions = ExtractWindowExpressions(plan)
=== [[apply]] Executing Rule
[source, scala]¶
apply(plan: LogicalPlan): LogicalPlan¶
apply
transforms the logical operators downwards in the input <
-
For
Filter
unary operators with Aggregate operator that <> in the < >, apply
...FIXME -
For <
> logical operators that < > in the < >, apply
...FIXME -
For <
> logical operators that < > in the < >, apply
...FIXME
apply
is part of the Rule abstraction.
=== [[hasWindowFunction]] hasWindowFunction
Internal Method
[source, scala]¶
hasWindowFunction(projectList: Seq[NamedExpression]): Boolean // <1> hasWindowFunction(expr: NamedExpression): Boolean
<1> Executes the other hasWindowFunction
on every NamedExpression
in the projectList
hasWindowFunction
is positive (true
) when the input expr
<hasWindowFunction
is negative (false
).
NOTE: hasWindowFunction
is used when ExtractWindowExpressions
logical resolution rule is requested to <
=== [[extract]] extract
Internal Method
[source, scala]¶
extract(expressions: Seq[NamedExpression]): (Seq[NamedExpression], Seq[NamedExpression])¶
extract
...FIXME
NOTE: extract
is used exclusively when ExtractWindowExpressions
logical resolution rule is <
=== [[addWindow]] Adding Project and Window Logical Operators to Logical Plan -- addWindow
Internal Method
[source, scala]¶
addWindow( expressionsWithWindowFunctions: Seq[NamedExpression], child: LogicalPlan): LogicalPlan
addWindow
adds a <
Internally, addWindow
...FIXME
NOTE: addWindow
is used exclusively when ExtractWindowExpressions
logical resolution rule is <