#![allow(clippy::collapsible_if)]
#![allow(clippy::let_and_return)]
pub mod config;
pub mod dataframe;
pub mod prelude;
pub mod schema;
pub mod session;
pub mod traits;
pub use robin_sparkless_polars::{column, error, functions, type_coercion};
pub use robin_sparkless_polars::functions::{SortOrder, *};
pub mod plan {
pub use crate::execute_plan;
pub use robin_sparkless_polars::plan::{PlanError, PlanExprError};
}
pub use robin_sparkless_core::engine::CollectedRows;
pub use robin_sparkless_core::expr::{
ExprIr, LiteralValue, WhenBuilder, WhenThenBuilder, alias, and_, between, call, col, count, eq,
ge, gt, is_in, is_null, le, lit_bool, lit_f64, lit_i32, lit_i64, lit_null, lit_str, lt, max,
mean, min, ne, not_, or_, sum, when,
};
pub use robin_sparkless_core::{DataType, EngineError, StructField, StructType};
pub use robin_sparkless_polars::{
Column, Expr, PolarsError, RustUdf, StructTypePolarsExt, UdfRegistry, broadcast, expression,
schema_from_json,
};
pub use dataframe::{
CubeRollupData, DataFrame, DataFrameNa, DataFrameStat, DataFrameWriter, GroupedData, JoinType,
PivotedGroupedData, SaveMode, SelectItem, WriteFormat, WriteMode,
};
pub use session::{DataFrameReader, SparkSession, SparkSessionBuilder};
pub use robin_sparkless_polars::plan::{PlanError, PlanExprError};
pub use traits::{FromRobinDf, IntoRobinDf};
pub fn execute_plan(
session: &SparkSession,
data: Vec<Vec<serde_json::Value>>,
schema: Vec<(String, String)>,
plan: &[serde_json::Value],
) -> Result<DataFrame, PlanError> {
robin_sparkless_polars::plan::execute_plan(&session.0, data, schema, plan).map(DataFrame)
}
pub use config::SparklessConfig;
pub fn to_engine_error(e: PolarsError) -> EngineError {
robin_sparkless_polars::polars_to_core_error(e)
}
#[cfg(feature = "sql")]
pub mod sql {
use crate::dataframe::DataFrame;
use crate::session::SparkSession;
use robin_sparkless_polars::PolarsError;
pub use robin_sparkless_polars::sql::{Statement, execute_sql, parse_sql};
pub fn execute_sql_root(session: &SparkSession, query: &str) -> Result<DataFrame, PolarsError> {
robin_sparkless_polars::sql::execute_sql(&session.0, query).map(DataFrame)
}
}
#[cfg(feature = "delta")]
pub mod delta {
use crate::dataframe::DataFrame;
use robin_sparkless_polars::PolarsError;
use std::path::Path;
pub use robin_sparkless_polars::delta::{read_delta, read_delta_with_version, write_delta};
pub fn read_delta_root(
path: impl AsRef<Path>,
case_sensitive: bool,
) -> Result<DataFrame, PolarsError> {
robin_sparkless_polars::delta::read_delta(path, case_sensitive).map(DataFrame)
}
pub fn read_delta_with_version_root(
path: impl AsRef<Path>,
version: Option<i64>,
case_sensitive: bool,
) -> Result<DataFrame, PolarsError> {
robin_sparkless_polars::delta::read_delta_with_version(path, version, case_sensitive)
.map(DataFrame)
}
}