import org.apache.spark.sql.catalyst.expressions.WindowExpression
// relation - Dataset as a table to query
val table = spark.emptyDataset[Int]
scala> val windowExpr = table
.selectExpr("count() OVER (PARTITION BY value) AS count")
.queryExecution
.logical (1)
.expressions
.toList(0)
.children(0)
.asInstanceOf[WindowExpression]
windowExpr: org.apache.spark.sql.catalyst.expressions.WindowExpression = 'count() windowspecdefinition('value, UnspecifiedFrame)
scala> windowExpr.sql
res2: String = count() OVER (PARTITION BY `value` UnspecifiedFrame)
WindowExpression Unevaluable Expression
WindowExpression is an unevaluable expression that contains the Catalyst expressions of a window function and WindowSpecDefinition in a query plan after Analyzer resolves UnresolvedWindowExpressions.
-
Use
sqlParserdirectly as in WithWindowDefinition Example
|
Note
|
WindowExpression is used in ExtractWindowExpressions, ResolveWindowOrder and ResolveWindowFrame logical evaluation rules.
|
|
Note
|
WindowExpression is also used in Analyzer for analysis validation for the following checks: FIXME…
|
|
Note
|
WindowExpression is used in NullPropagation optimization.
|
| Name | Description |
|---|---|
|
Collection of two expressions, i.e. windowFunction and WindowSpecDefinition, for which |
|
|
|
Whether or not windowFunction is foldable. |
|
Whether or not windowFunction is nullable. |
|
|
|
|
UnresolvedWindowExpression Unevaluable Expression — WindowExpression With Unresolved Window Specification Reference
UnresolvedWindowExpression is an unevaluable expression (i.e. with no support for eval and doGenCode methods).
UnresolvedWindowExpression is created to represent a child expression and WindowSpecReference (with an identifier for the window reference) when AstBuilder parses a function evaluated in a windowed context with a WindowSpecReference.
UnresolvedWindowExpression is resolved to a WindowExpression when Analyzer resolves UnresolvedWindowExpressions.
import spark.sessionState.sqlParser
scala> sqlParser.parseExpression("foo() OVER windowSpecRef")
res1: org.apache.spark.sql.catalyst.expressions.Expression = unresolvedwindowexpression('foo(), WindowSpecReference(windowSpecRef))
| Name | Description |
|---|---|
|
Reports a |
|
Reports a |
|
Reports a |
|
Disabled (i.e. |