Expand Unary Logical Operator¶
Expand
is a spark-sql-LogicalPlan.md#UnaryNode[unary logical operator] that represents Cube
, Rollup
, GroupingSets.md[GroupingSets] and expressions/TimeWindow.md[TimeWindow] logical operators after they have been resolved at <
FIXME Examples for
1. Cube
2. Rollup
3. GroupingSets
4. See TimeWindow
val q = ...
scala> println(q.queryExecution.logical.numberedTreeString)
...
Note
Expand
logical operator is resolved to ExpandExec
physical operator in BasicOperators execution planning strategy.
[[properties]] .Expand's Properties [width="100%",cols="1,2",options="header"] |=== | Name | Description
| references
| AttributeSet
from <
| validConstraints
| Empty set of expressions/Expression.md[expressions] |===
Analysis Phase¶
Expand
logical operator is resolved to at analysis phase in the following logical evaluation rules:
-
ResolveGroupingAnalytics (for
Cube
,Rollup
, GroupingSets logical operators) -
TimeWindowing
(for TimeWindow logical operator)
NOTE: Aggregate -> (Cube|Rollup|GroupingSets) -> constructAggregate -> constructExpand
val spark: SparkSession = ...
// using q from the example above
val plan = q.queryExecution.logical
scala> println(plan.numberedTreeString)
...FIXME
=== [[optimizer]] Rule-Based Logical Query Optimization Phase
=== [[creating-instance]] Creating Expand Instance
Expand
takes the following when created:
- [[projections]] Projection expressions
- [[output]] Output schema attributes
- [[child]] Child logical plan