Crate datafusion_expr
source ·Expand description
DataFusion is an extensible query execution framework that uses Apache Arrow as its in-memory format.
This crate is a submodule of DataFusion that provides types representing logical query plans (LogicalPlan) and logical expressions (Expr) as well as utilities for working with these types.
The expr_fn module contains functions for creating expressions.
Re-exports§
pub use aggregate_function::AggregateFunction;
pub use expr::Between;
pub use expr::BinaryExpr;
pub use expr::Case;
pub use expr::Cast;
pub use expr::Expr;
pub use expr::GetFieldAccess;
pub use expr::GetIndexedField;
pub use expr::GroupingSet;
pub use expr::Like;
pub use expr::ScalarFunctionDefinition;
pub use expr::TryCast;
pub use expr::WindowFunctionDefinition;
pub use expr_schema::ExprSchemable;
pub use function::AccumulatorFactoryFunction;
pub use function::PartitionEvaluatorFactory;
pub use function::ReturnTypeFunction;
pub use function::ScalarFunctionImplementation;
pub use function::StateTypeFunction;
pub use groups_accumulator::EmitTo;
pub use groups_accumulator::GroupsAccumulator;
pub use window_frame::WindowFrame;
pub use window_frame::WindowFrameBound;
pub use window_frame::WindowFrameUnits;
pub use expr_fn::*;
pub use logical_plan::*;
Modules§
- Aggregate function module contains all built-in aggregate functions definitions
- Conditional expressions
- Logical Expressions:
Expr
- Functions for creating logical expressions
- Expression rewriter
- Utility functions for complex field access
- Function module contains typing and signature for built-in and user defined functions.
- Vectorized
GroupsAccumulator
- Interval arithmetic library
- Structs and traits to provide the information needed for expression simplification.
- Tree node implementation for logical expr
- Type coercion rules for DataFusion
- Expression utilities
- Variable provider
- Window frame module
- Structures used to hold window function state (for implementing WindowUDFs)
Macros§
Structs§
- Logical representation of a user-defined aggregate function (UDAF).
- Logical representation of a Scalar User Defined Function.
- Defines the supported argument types (
TypeSignature
) andVolatility
for a function. - Logical representation of a user-defined window function (UDWF) A UDWF is different from a UDF in that it is stateful across batches.
Enums§
- A window function built in to DataFusion
- The result of evaluating an expression.
- Operators applied to expressions
- Indicates how a filter expression is handled by
TableProvider::scan
. - Indicates the type of this table for metadata/catalog purposes.
- A function’s type signature defines the types of arguments the function supports.
- A function’s volatility, which defines the functions eligibility for certain optimizations
Constants§
- Constant that is used as a placeholder for any valid timezone. This is used where a function can accept a timestamp type with any valid timezone, it exists to avoid the need to enumerate all possible timezones. See
TypeSignature
for more details.
Traits§
- Tracks an aggregate function’s state.
- Trait for implementing
AggregateUDF
. - Trait for converting a type to a
Literal
literal expression. - Partition evaluator for Window Functions
- Trait for implementing
ScalarUDF
. - The TableSource trait is used during logical query planning and optimizations and provides access to schema information and filter push-down capabilities. This trait provides a subset of the functionality of the TableProvider trait in the core datafusion crate. The TableProvider trait provides additional capabilities needed for physical query execution (such as the ability to perform a scan). The reason for having two separate traits is to avoid having the logical plan code be dependent on the DataFusion execution engine. Other projects may want to use DataFusion’s logical plans and have their own execution engine.
- Trait for converting a type to a literal timestamp
- Trait for implementing
WindowUDF
.
Functions§
- Create a literal expression
- Create a literal timestamp expression
Type Aliases§
- Monotonicity of the
ScalarFunctionExpr
with respect to its arguments. Each element of this vector corresponds to an argument and indicates whether the function’s behavior is monotonic, or non-monotonic/unknown for that argument, namely: