polars-sql 0.53.0

SQL transpiler for Polars. Converts SQL to Polars logical plans
Documentation
use polars_core::prelude::*;
use polars_lazy::prelude::*;
use polars_sql::*;

#[test]
fn test_math_functions() {
    let df = df! {
        "a" => [1.0]
    }
    .unwrap();
    let mut context = SQLContext::new();
    context.register("df", df.clone().lazy());
    let sql = r#"
        SELECT
            a,
            ABS(a) AS abs,
            ACOS(a) AS acos,
            ASIN(a) AS asin,
            ATAN(a) AS atan,
            PI() AS pi,
            CEIL(a) AS ceil,
            EXP(a) AS exp,
            FLOOR(a) AS floor,
            LN(a) AS ln,
            LOG2(a) AS log2,
            LOG10(a) AS log10,
            LOG(a, 5) AS log5,
            LOG1P(a) AS log1p,
            POW(a, 2) AS pow,
            SQRT(a) AS sqrt,
            CBRT(a) AS cbrt
        FROM df"#;
    let df_sql = context.execute(sql).unwrap().collect().unwrap();
    let df_pl = df
        .lazy()
        .select(&[
            col("a"),
            col("a").abs().alias("abs"),
            col("a").arccos().alias("acos"),
            col("a").arcsin().alias("asin"),
            col("a").arctan().alias("atan"),
            lit(std::f64::consts::PI).alias("pi"),
            col("a").ceil().alias("ceil"),
            col("a").exp().alias("exp"),
            col("a").floor().alias("floor"),
            col("a").log(lit(std::f64::consts::E)).alias("ln"),
            col("a").log(lit(2.0)).alias("log2"),
            col("a").log(lit(10.0)).alias("log10"),
            col("a").log(lit(5.0)).alias("log5"),
            col("a").log1p().alias("log1p"),
            col("a").pow(2.0).alias("pow"),
            col("a").sqrt().alias("sqrt"),
            col("a").cbrt().alias("cbrt"),
        ])
        .collect()
        .unwrap();
    println!("{}", df_pl.head(Some(10)));
    println!("{}", df_sql.head(Some(10)));
    assert!(df_sql.equals_missing(&df_pl));
}