fn add_builder_fns_to_aggregate()

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())
}