in src/functions.rs [46:73]
fn add_builder_fns_to_aggregate(
agg_fn: Expr,
distinct: Option<bool>,
filter: Option<PyExpr>,
order_by: Option<Vec<PySortExpr>>,
null_treatment: Option<NullTreatment>,
) -> PyDataFusionResult<PyExpr> {
// Since ExprFuncBuilder::new() is private, we can guarantee initializing
// a builder with an `null_treatment` with option None
let mut builder = agg_fn.null_treatment(None);
if let Some(order_by_cols) = order_by {
let order_by_cols = to_sort_expressions(order_by_cols);
builder = builder.order_by(order_by_cols);
}
if let Some(true) = distinct {
builder = builder.distinct();
}
if let Some(filter) = filter {
builder = builder.filter(filter.expr);
}
builder = builder.null_treatment(null_treatment.map(DFNullTreatment::from));
Ok(builder.build()?.into())
}