object GpuWindowExecMeta
- Alphabetic
- By Inheritance
- GpuWindowExecMeta
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def getBoundedWindowPrecedingAndFollowing(spec: GpuWindowSpecDefinition): (Int, Int)
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def isBatchedDoublePassFunc(func: Expression, spec: GpuWindowSpecDefinition): Boolean
- def isBatchedFunc(func: Expression, spec: GpuWindowSpecDefinition, conf: RapidsConf): Boolean
- def isBatchedRunningFunc(func: Expression, spec: GpuWindowSpecDefinition): Boolean
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isUnboundedToUnboundedAggFunc(func: Expression, spec: GpuWindowSpecDefinition, conf: RapidsConf): Boolean
Checks whether the window aggregation qualifies to be accelerated via group-by aggregation.
Checks whether the window aggregation qualifies to be accelerated via group-by aggregation. Currently, aggregations without group-by (i.e. whole-table aggregations) are not supported.
- def isUnboundedToUnboundedWindow(spec: GpuWindowSpecDefinition): Boolean
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
remapAttributes(windowOps: Seq[NamedExpression], post: Seq[NamedExpression]): Seq[NamedExpression]
As a part of
splitAndDedupthe dedup part adds a layer of indirection.As a part of
splitAndDedupthe dedup part adds a layer of indirection. This attempts to remove that layer of indirection.- windowOps
the windowOps output of splitAndDedup
- post
the post output of splitAndDedup
- returns
a version of windowOps that has removed as many un-needed temp aliases as possible.
-
def
splitAndDedup(inputFieldExprs: Seq[NamedExpression], windowExprs: Seq[NamedExpression], resultColumnsOnly: Boolean): (Seq[NamedExpression], Seq[NamedExpression], Seq[NamedExpression])
In some distributions expressions passed into WindowExec can have more operations in them than just a WindowExpression wrapped in an GpuAlias.
In some distributions expressions passed into WindowExec can have more operations in them than just a WindowExpression wrapped in an GpuAlias. This is a problem if we want to try and do multiple window operations in a single pass to speed things up or if we need to add new transitive window functions when we are doing some memory optimizations, like running window. This will split the input expressions into three sets of expressions. The first set is a project with no window expressions in it at all. The second takes the first as input and will only have aliases to columns in the first or named expressions wrapping a single window function in it. The third uses the second as input and will do any final steps to combine window functions together.
For example
SUM(a) - SUM(b + c) over (PARTITION BY d ORDER BY e) as resultwould be transformed intoPhase 1 (Pre project): a, b + c as _tmp0, d, e Phase 2 (Window Operations): SUM(a) over (PARTITION BY d ORDER BY e) as _tmp1, SUM(_tmp0) over (PARTITION BY d ORDER BY e) as _tmp2 Phase 3 (Post Project): (_tmp1 - _tmp2) as result
To handle special cases (like window function of another window function eg
LAG(SUM(a), 2), distros should split apart those into separate window operations. However, we will not see all of these in just the input window expressions of the WindowExec, so we process both the input fields and input window expressions, and handle whether we *only* want result columns using the Post Project stage.- inputFieldExprs
the input fields converted to input expressions
- windowExprs
the input window expressions to a GpuWindowExec
- resultColumnsOnly
whether the output of the window operation only desires result columns or the output of all input expressions
- def splitBatchedOps(windowOps: Seq[NamedExpression], conf: RapidsConf): BatchedOps
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()