pub trait Accumulator: Send + Sync + Debug {
    fn state(&self) -> Result<Vec<ScalarValue>>;
    fn update_batch(&mut self, values: &[ArrayRef]) -> Result<()>;
    fn merge_batch(&mut self, states: &[ArrayRef]) -> Result<()>;
    fn evaluate(&self) -> Result<ScalarValue>;
}
Expand description

An accumulator represents a stateful object that lives throughout the evaluation of multiple rows and generically accumulates values.

An accumulator knows how to:

  • update its state from inputs via update_batch
  • convert its internal state to a vector of scalar values
  • update its state from multiple accumulators’ states via merge_batch
  • compute the final value from its internal state via evaluate

Required Methods

Returns the state of the accumulator at the end of the accumulation.

updates the accumulator’s state from a vector of arrays.

updates the accumulator’s state from a vector of states.

returns its value based on its current state.

Implementors