pub struct GroupsAccumulatorAdapter { /* private fields */ }Expand description
An adapter that implements GroupsAccumulator for any Accumulator
While Accumulator are simpler to implement and can support
more general calculations (like retractable window functions),
they are not as fast as a specialized GroupsAccumulator. This
interface bridges the gap so the group by operator only operates
in terms of Accumulator.
Implementations§
source§impl GroupsAccumulatorAdapter
impl GroupsAccumulatorAdapter
sourcepub fn new<F>(factory: F) -> GroupsAccumulatorAdapter
pub fn new<F>(factory: F) -> GroupsAccumulatorAdapter
Create a new adapter that will create a new Accumulator
for each group, using the specified factory function
Trait Implementations§
source§impl GroupsAccumulator for GroupsAccumulatorAdapter
impl GroupsAccumulator for GroupsAccumulatorAdapter
source§fn update_batch(
&mut self,
values: &[Arc<dyn Array>],
group_indices: &[usize],
opt_filter: Option<&BooleanArray>,
total_num_groups: usize,
) -> Result<(), DataFusionError>
fn update_batch( &mut self, values: &[Arc<dyn Array>], group_indices: &[usize], opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<(), DataFusionError>
source§fn evaluate(
&mut self,
emit_to: EmitTo,
) -> Result<Arc<dyn Array>, DataFusionError>
fn evaluate( &mut self, emit_to: EmitTo, ) -> Result<Arc<dyn Array>, DataFusionError>
Returns the final aggregate value for each group as a single
RecordBatch, resetting the internal state. Read moresource§fn state(
&mut self,
emit_to: EmitTo,
) -> Result<Vec<Arc<dyn Array>>, DataFusionError>
fn state( &mut self, emit_to: EmitTo, ) -> Result<Vec<Arc<dyn Array>>, DataFusionError>
Returns the intermediate aggregate state for this accumulator,
used for multi-phase grouping, resetting its internal state. Read more
source§fn merge_batch(
&mut self,
values: &[Arc<dyn Array>],
group_indices: &[usize],
opt_filter: Option<&BooleanArray>,
total_num_groups: usize,
) -> Result<(), DataFusionError>
fn merge_batch( &mut self, values: &[Arc<dyn Array>], group_indices: &[usize], opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<(), DataFusionError>
Merges intermediate state (the output from
Self::state)
into this accumulator’s current state. Read moresource§fn size(&self) -> usize
fn size(&self) -> usize
Amount of memory used to store the state of this accumulator,
in bytes. Read more
source§fn convert_to_state(
&self,
_values: &[Arc<dyn Array>],
_opt_filter: Option<&BooleanArray>,
) -> Result<Vec<Arc<dyn Array>>, DataFusionError>
fn convert_to_state( &self, _values: &[Arc<dyn Array>], _opt_filter: Option<&BooleanArray>, ) -> Result<Vec<Arc<dyn Array>>, DataFusionError>
Converts an input batch directly the intermediate aggregate state. Read more
source§fn supports_convert_to_state(&self) -> bool
fn supports_convert_to_state(&self) -> bool
Returns
true if Self::convert_to_state is implemented to support
intermediate aggregate state conversion.Auto Trait Implementations§
impl Freeze for GroupsAccumulatorAdapter
impl !RefUnwindSafe for GroupsAccumulatorAdapter
impl Send for GroupsAccumulatorAdapter
impl !Sync for GroupsAccumulatorAdapter
impl Unpin for GroupsAccumulatorAdapter
impl !UnwindSafe for GroupsAccumulatorAdapter
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more