Trait datafusion::physical_plan::AggregateExpr
source · [−]pub trait AggregateExpr: Send + Sync + Debug {
fn as_any(&self) -> &(dyn Any + 'static);
fn field(&self) -> Result<Field, DataFusionError>;
fn create_accumulator(
&self
) -> Result<Box<dyn Accumulator + 'static, Global>, DataFusionError>;
fn state_fields(&self) -> Result<Vec<Field, Global>, DataFusionError>;
fn expressions(&self) -> Vec<Arc<dyn PhysicalExpr + 'static>, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A>where
A: Allocator,
;
fn name(&self) -> &str { ... }
fn row_accumulator_supported(&self) -> bool { ... }
fn create_row_accumulator(
&self,
_start_index: usize
) -> Result<Box<dyn RowAccumulator + 'static, Global>, DataFusionError> { ... }
}
Expand description
An aggregate expression that:
- knows its resulting field
- knows how to create its accumulator
- knows its accumulator’s state’s field
- knows the expressions from whose its accumulator will receive values
Required Methods
sourcefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Returns the aggregate expression as Any
so that it can be
downcast to a specific implementation.
sourcefn field(&self) -> Result<Field, DataFusionError>
fn field(&self) -> Result<Field, DataFusionError>
the field of the final result of this aggregation.
sourcefn create_accumulator(
&self
) -> Result<Box<dyn Accumulator + 'static, Global>, DataFusionError>
fn create_accumulator(
&self
) -> Result<Box<dyn Accumulator + 'static, Global>, DataFusionError>
the accumulator used to accumulate values from the expressions.
the accumulator expects the same number of arguments as expressions
and must
return states with the same description as state_fields
sourcefn state_fields(&self) -> Result<Vec<Field, Global>, DataFusionError>
fn state_fields(&self) -> Result<Vec<Field, Global>, DataFusionError>
the fields that encapsulate the Accumulator’s state the number of fields here equals the number of states that the accumulator contains
Provided Methods
sourcefn name(&self) -> &str
fn name(&self) -> &str
Human readable name such as "MIN(c2)"
. The default
implementation returns placeholder text.
sourcefn row_accumulator_supported(&self) -> bool
fn row_accumulator_supported(&self) -> bool
If the aggregate expression is supported by row format
sourcefn create_row_accumulator(
&self,
_start_index: usize
) -> Result<Box<dyn RowAccumulator + 'static, Global>, DataFusionError>
fn create_row_accumulator(
&self,
_start_index: usize
) -> Result<Box<dyn RowAccumulator + 'static, Global>, DataFusionError>
RowAccumulator to access/update row-based aggregation state in-place. Currently, row accumulator only supports states of fixed-sized type.
We recommend implementing RowAccumulator
along with the standard Accumulator
,
when its state is of fixed size, as RowAccumulator is more memory efficient and CPU-friendly.