Trait datafusion_physical_expr::window::WindowExpr
source · [−]pub trait WindowExpr: Send + Sync + Debug {
fn as_any(&self) -> &dyn Any;
fn field(&self) -> Result<Field>;
fn expressions(&self) -> Vec<Arc<dyn PhysicalExpr>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
;
fn evaluate(&self, batch: &RecordBatch) -> Result<ArrayRef>;
fn partition_by(&self) -> &[Arc<dyn PhysicalExpr>];
fn order_by(&self) -> &[PhysicalSortExpr];
fn name(&self) -> &str { ... }
fn evaluate_args(&self, batch: &RecordBatch) -> Result<Vec<ArrayRef>> { ... }
fn evaluate_partition_points(
&self,
num_rows: usize,
partition_columns: &[SortColumn]
) -> Result<Vec<Range<usize>>> { ... }
fn partition_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>> { ... }
fn sort_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>> { ... }
}
Expand description
A window expression that:
- knows its resulting field
Required Methods
Returns the window expression as Any
so that it can be
downcast to a specific implementation.
expressions that are passed to the WindowAccumulator.
Functions which take a single input argument, such as sum
, return a single datafusion_expr::expr::Expr
,
others (e.g. cov
) return many.
fn evaluate(&self, batch: &RecordBatch) -> Result<ArrayRef>
fn evaluate(&self, batch: &RecordBatch) -> Result<ArrayRef>
evaluate the window function values against the batch
fn partition_by(&self) -> &[Arc<dyn PhysicalExpr>]
fn partition_by(&self) -> &[Arc<dyn PhysicalExpr>]
expressions that’s from the window function’s partition by clause, empty if absent
fn order_by(&self) -> &[PhysicalSortExpr]
fn order_by(&self) -> &[PhysicalSortExpr]
expressions that’s from the window function’s order by clause, empty if absent
Provided Methods
Human readable name such as "MIN(c2)"
or "RANK()"
. The default
implementation returns placeholder text.
fn evaluate_args(&self, batch: &RecordBatch) -> Result<Vec<ArrayRef>>
fn evaluate_args(&self, batch: &RecordBatch) -> Result<Vec<ArrayRef>>
evaluate the window function arguments against the batch and return array ref, normally the resulting vec is a single element one.
fn evaluate_partition_points(
&self,
num_rows: usize,
partition_columns: &[SortColumn]
) -> Result<Vec<Range<usize>>>
fn evaluate_partition_points(
&self,
num_rows: usize,
partition_columns: &[SortColumn]
) -> Result<Vec<Range<usize>>>
evaluate the partition points given the sort columns; if the sort columns are empty then the result will be a single element vec of the whole column rows.
fn partition_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>>
fn partition_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>>
get partition columns that can be used for partitioning, empty if absent
fn sort_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>>
fn sort_columns(&self, batch: &RecordBatch) -> Result<Vec<SortColumn>>
get sort columns that can be used for peer evaluation, empty if absent