datafusion_spark/function/aggregate/
mod.rs1use datafusion_expr::AggregateUDF;
19use std::sync::Arc;
20
21pub mod avg;
22pub mod collect;
23pub mod try_sum;
24
25pub mod expr_fn {
26 use datafusion_functions::export_functions;
27
28 export_functions!((avg, "Returns the average value of a given column", arg1));
29 export_functions!((
30 try_sum,
31 "Returns the sum of values for a column, or NULL if overflow occurs",
32 arg1
33 ));
34 export_functions!((
35 collect_list,
36 "Returns a list created from the values in a column",
37 arg1
38 ));
39 export_functions!((
40 collect_set,
41 "Returns a set created from the values in a column",
42 arg1
43 ));
44}
45
46pub fn avg() -> Arc<AggregateUDF> {
48 Arc::new(AggregateUDF::new_from_impl(avg::SparkAvg::new()))
49}
50pub fn try_sum() -> Arc<AggregateUDF> {
51 Arc::new(AggregateUDF::new_from_impl(try_sum::SparkTrySum::new()))
52}
53pub fn collect_list() -> Arc<AggregateUDF> {
54 Arc::new(AggregateUDF::new_from_impl(collect::SparkCollectList::new()))
55}
56pub fn collect_set() -> Arc<AggregateUDF> {
57 Arc::new(AggregateUDF::new_from_impl(collect::SparkCollectSet::new()))
58}
59
60pub fn functions() -> Vec<Arc<AggregateUDF>> {
61 vec![avg(), try_sum(), collect_list(), collect_set()]
62}