pub struct SedonaAggregateUDF { /* private fields */ }Expand description
Top-level aggregate user-defined function
This struct implements datafusion’s AggregateUDFImpl and implements kernel dispatch such that implementations can be registered flexibly.
Implementations§
Source§impl SedonaAggregateUDF
impl SedonaAggregateUDF
Sourcepub fn new(
name: &str,
kernels: impl IntoSedonaAccumulatorRefs,
volatility: Volatility,
) -> Self
pub fn new( name: &str, kernels: impl IntoSedonaAccumulatorRefs, volatility: Volatility, ) -> Self
Create a new SedonaAggregateUDF
Sourcepub fn from_impl(name: &str, kernels: impl IntoSedonaAccumulatorRefs) -> Self
pub fn from_impl(name: &str, kernels: impl IntoSedonaAccumulatorRefs) -> Self
Create a new immutable SedonaAggregateUDF
Sourcepub fn add_kernel(&mut self, kernels: impl IntoSedonaAccumulatorRefs)
pub fn add_kernel(&mut self, kernels: impl IntoSedonaAccumulatorRefs)
Add a new kernel to an Aggregate UDF
Because kernels are resolved in reverse order, the new kernel will take precedence over any previously added kernels that apply to the same types.
pub fn kernels(&self) -> &[SedonaAccumulatorRef] ⓘ
Trait Implementations§
Source§impl AggregateUDFImpl for SedonaAggregateUDF
impl AggregateUDFImpl for SedonaAggregateUDF
Source§fn signature(&self) -> &Signature
fn signature(&self) -> &Signature
Returns the function’s
Signature for information about what input
types are accepted and the function’s Volatility.Source§fn coerce_types(&self, arg_types: &[DataType]) -> Result<Vec<DataType>>
fn coerce_types(&self, arg_types: &[DataType]) -> Result<Vec<DataType>>
Coerce arguments of a function call to types that the function can evaluate. Read more
Source§fn state_fields(&self, args: StateFieldsArgs<'_>) -> Result<Vec<FieldRef>>
fn state_fields(&self, args: StateFieldsArgs<'_>) -> Result<Vec<FieldRef>>
Return the fields used to store the intermediate state of this accumulator. Read more
Source§fn return_field(&self, arg_fields: &[FieldRef]) -> Result<FieldRef>
fn return_field(&self, arg_fields: &[FieldRef]) -> Result<FieldRef>
What type will be returned by this function, given the arguments? Read more
Source§fn return_type(&self, _arg_types: &[DataType]) -> Result<DataType>
fn return_type(&self, _arg_types: &[DataType]) -> Result<DataType>
What
DataType will be returned by this function, given the types of
the argumentsSource§fn groups_accumulator_supported(&self, args: AccumulatorArgs<'_>) -> bool
fn groups_accumulator_supported(&self, args: AccumulatorArgs<'_>) -> bool
If the aggregate expression has a specialized
GroupsAccumulator implementation. If this returns true,
[Self::create_groups_accumulator] will be called. Read moreSource§fn create_groups_accumulator(
&self,
args: AccumulatorArgs<'_>,
) -> Result<Box<dyn GroupsAccumulator>>
fn create_groups_accumulator( &self, args: AccumulatorArgs<'_>, ) -> Result<Box<dyn GroupsAccumulator>>
Return a specialized
GroupsAccumulator that manages state
for all groups. Read moreSource§fn accumulator(
&self,
acc_args: AccumulatorArgs<'_>,
) -> Result<Box<dyn Accumulator>>
fn accumulator( &self, acc_args: AccumulatorArgs<'_>, ) -> Result<Box<dyn Accumulator>>
Return a new
Accumulator that aggregates values for a specific
group during query execution. Read moreSource§fn documentation(&self) -> Option<&Documentation>
fn documentation(&self) -> Option<&Documentation>
Returns the documentation for this Aggregate UDF. Read more
Source§fn aliases(&self) -> &[String]
fn aliases(&self) -> &[String]
Returns any aliases (alternate names) for this function. Read more
Source§fn schema_name(
&self,
params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
fn schema_name( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns the name of the column this expression would create Read more
Source§fn human_display(
&self,
params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
fn human_display( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns a human readable expression. Read more
Source§fn window_function_schema_name(
&self,
params: &WindowFunctionParams,
) -> Result<String, DataFusionError>
fn window_function_schema_name( &self, params: &WindowFunctionParams, ) -> Result<String, DataFusionError>
Returns the name of the column this expression would create Read more
Source§fn display_name(
&self,
params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
fn display_name( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns the user-defined display name of function, given the arguments Read more
Source§fn window_function_display_name(
&self,
params: &WindowFunctionParams,
) -> Result<String, DataFusionError>
fn window_function_display_name( &self, params: &WindowFunctionParams, ) -> Result<String, DataFusionError>
Returns the user-defined display name of function, given the arguments Read more
Source§fn is_nullable(&self) -> bool
fn is_nullable(&self) -> bool
Whether the aggregate function is nullable. Read more
Source§fn create_sliding_accumulator(
&self,
args: AccumulatorArgs<'_>,
) -> Result<Box<dyn Accumulator>, DataFusionError>
fn create_sliding_accumulator( &self, args: AccumulatorArgs<'_>, ) -> Result<Box<dyn Accumulator>, DataFusionError>
Sliding accumulator is an alternative accumulator that can be used for
window functions. It has retract method to revert the previous update. Read more
Source§fn with_beneficial_ordering(
self: Arc<Self>,
_beneficial_ordering: bool,
) -> Result<Option<Arc<dyn AggregateUDFImpl>>, DataFusionError>
fn with_beneficial_ordering( self: Arc<Self>, _beneficial_ordering: bool, ) -> Result<Option<Arc<dyn AggregateUDFImpl>>, DataFusionError>
Sets the indicator whether ordering requirements of the AggregateUDFImpl is
satisfied by its input. If this is not the case, UDFs with order
sensitivity
AggregateOrderSensitivity::Beneficial can still produce
the correct result with possibly more work internally. Read moreSource§fn order_sensitivity(&self) -> AggregateOrderSensitivity
fn order_sensitivity(&self) -> AggregateOrderSensitivity
Gets the order sensitivity of the UDF. See
AggregateOrderSensitivity
for possible options.Source§fn simplify(
&self,
) -> Option<Box<dyn Fn(AggregateFunction, &dyn SimplifyInfo) -> Result<Expr, DataFusionError>>>
fn simplify( &self, ) -> Option<Box<dyn Fn(AggregateFunction, &dyn SimplifyInfo) -> Result<Expr, DataFusionError>>>
Optionally apply per-UDaF simplification / rewrite rules. Read more
Source§fn reverse_expr(&self) -> ReversedUDAF
fn reverse_expr(&self) -> ReversedUDAF
Returns the reverse expression of the aggregate function.
Source§fn is_descending(&self) -> Option<bool>
fn is_descending(&self) -> Option<bool>
If this function is max, return true
If the function is min, return false
Otherwise return None (the default) Read more
Source§fn value_from_stats(
&self,
_statistics_args: &StatisticsArgs<'_>,
) -> Option<ScalarValue>
fn value_from_stats( &self, _statistics_args: &StatisticsArgs<'_>, ) -> Option<ScalarValue>
Return the value of this aggregate function if it can be determined
entirely from statistics and arguments. Read more
Source§fn default_value(
&self,
data_type: &DataType,
) -> Result<ScalarValue, DataFusionError>
fn default_value( &self, data_type: &DataType, ) -> Result<ScalarValue, DataFusionError>
Returns default value of the function given the input is all
null. Read moreSource§fn supports_null_handling_clause(&self) -> bool
fn supports_null_handling_clause(&self) -> bool
If this function supports
[IGNORE NULLS | RESPECT NULLS] clause, return true
If the function does not, return falseSource§fn supports_within_group_clause(&self) -> bool
fn supports_within_group_clause(&self) -> bool
If this function supports the
WITHIN GROUP (ORDER BY column [ASC|DESC])
SQL syntax, return true. Otherwise, return false (default) which will
cause an error when parsing SQL where this syntax is detected for this
function. Read moreSource§fn set_monotonicity(&self, _data_type: &DataType) -> SetMonotonicity
fn set_monotonicity(&self, _data_type: &DataType) -> SetMonotonicity
Indicates whether the aggregation function is monotonic as a set
function. See
SetMonotonicity for details.Source§impl Clone for SedonaAggregateUDF
impl Clone for SedonaAggregateUDF
Source§fn clone(&self) -> SedonaAggregateUDF
fn clone(&self) -> SedonaAggregateUDF
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SedonaAggregateUDF
impl Debug for SedonaAggregateUDF
Source§impl Hash for SedonaAggregateUDF
impl Hash for SedonaAggregateUDF
Source§impl PartialEq for SedonaAggregateUDF
impl PartialEq for SedonaAggregateUDF
impl Eq for SedonaAggregateUDF
Auto Trait Implementations§
impl Freeze for SedonaAggregateUDF
impl !RefUnwindSafe for SedonaAggregateUDF
impl Send for SedonaAggregateUDF
impl Sync for SedonaAggregateUDF
impl Unpin for SedonaAggregateUDF
impl UnsafeUnpin for SedonaAggregateUDF
impl !UnwindSafe for SedonaAggregateUDF
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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