Skip to content

Expand Unary Logical Operator

Expand is a[unary logical operator] that represents Cube, Rollup,[GroupingSets] and expressions/[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)


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/[expressions] |===

Analysis Phase

Expand logical operator is resolved to at analysis phase in the following logical evaluation rules:

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)

=== [[optimizer]] Rule-Based Logical Query Optimization Phase

=== [[creating-instance]] Creating Expand Instance

Expand takes the following when created: