fn window()

in src/functions.rs [128:157]


fn window(
    name: &str,
    args: Vec<PyExpr>,
    partition_by: Option<Vec<PyExpr>>,
    order_by: Option<Vec<PyExpr>>,
) -> PyResult<PyExpr> {
    let fun = find_df_window_func(name);
    if fun.is_none() {
        return Err(DataFusionError::Common("window function not found".to_string()).into());
    }
    let fun = fun.unwrap();
    let window_frame = WindowFrame::new(order_by.is_some());
    Ok(PyExpr {
        expr: datafusion_expr::Expr::WindowFunction(WindowFunction {
            fun,
            args: args.into_iter().map(|x| x.expr).collect::<Vec<_>>(),
            partition_by: partition_by
                .unwrap_or_default()
                .into_iter()
                .map(|x| x.expr)
                .collect::<Vec<_>>(),
            order_by: order_by
                .unwrap_or_default()
                .into_iter()
                .map(|x| x.expr)
                .collect::<Vec<_>>(),
            window_frame,
        }),
    })
}