struct AvgGroupsAccumulator<T, F>{
sum_data_type: DataType,
return_data_type: DataType,
counts: Vec<u64>,
sums: Vec<T::Native>,
null_state: NullState,
avg_fn: F,
}Expand description
An accumulator to compute the average of [PrimitiveArray<T>].
Stores values as native types, and does overflow checking
F: Function that calculates the average value from a sum of T::Native and a total count
Fields§
§sum_data_type: DataTypeThe type of the internal sum
return_data_type: DataTypeThe type of the returned sum
counts: Vec<u64>Count per group (use u64 to make UInt64Array)
sums: Vec<T::Native>Sums per group, stored as the native type
null_state: NullStateTrack nulls in the input / filters
avg_fn: FFunction that computes the final average (value / count)
Implementations§
Trait Implementations§
Source§impl<T, F> Debug for AvgGroupsAccumulator<T, F>
impl<T, F> Debug for AvgGroupsAccumulator<T, F>
Source§impl<T, F> GroupsAccumulator for AvgGroupsAccumulator<T, F>
impl<T, F> GroupsAccumulator for AvgGroupsAccumulator<T, F>
Source§fn update_batch(
&mut self,
values: &[ArrayRef],
group_indices: &[usize],
opt_filter: Option<&BooleanArray>,
total_num_groups: usize,
) -> Result<()>
fn update_batch( &mut self, values: &[ArrayRef], group_indices: &[usize], opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()>
Updates the accumulator’s state from its arguments, encoded as
a vector of [
ArrayRef]s. Read moreSource§fn evaluate(&mut self, emit_to: EmitTo) -> Result<ArrayRef>
fn evaluate(&mut self, emit_to: EmitTo) -> Result<ArrayRef>
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<ArrayRef>>
fn state(&mut self, emit_to: EmitTo) -> Result<Vec<ArrayRef>>
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: &[ArrayRef],
group_indices: &[usize],
opt_filter: Option<&BooleanArray>,
total_num_groups: usize,
) -> Result<()>
fn merge_batch( &mut self, values: &[ArrayRef], group_indices: &[usize], opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()>
Merges intermediate state (the output from [
Self::state])
into this accumulator’s current state. Read moreSource§fn convert_to_state(
&self,
values: &[ArrayRef],
opt_filter: Option<&BooleanArray>,
) -> Result<Vec<ArrayRef>>
fn convert_to_state( &self, values: &[ArrayRef], opt_filter: Option<&BooleanArray>, ) -> Result<Vec<ArrayRef>>
Converts an input batch directly to 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<T, F> Freeze for AvgGroupsAccumulator<T, F>where
F: Freeze,
impl<T, F> RefUnwindSafe for AvgGroupsAccumulator<T, F>where
F: RefUnwindSafe,
<T as ArrowPrimitiveType>::Native: RefUnwindSafe,
impl<T, F> Send for AvgGroupsAccumulator<T, F>
impl<T, F> Sync for AvgGroupsAccumulator<T, F>where
F: Sync,
impl<T, F> Unpin for AvgGroupsAccumulator<T, F>
impl<T, F> UnwindSafe for AvgGroupsAccumulator<T, F>where
F: UnwindSafe,
<T as ArrowPrimitiveType>::Native: UnwindSafe,
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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