Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Expr in datafusion_expr::expr - Rust
[go: Go Back, main page]

pub enum Expr {
Show 37 variants Alias(Box<Expr>, String), Column(Column), ScalarVariable(DataType, Vec<String>), Literal(ScalarValue), BinaryExpr(BinaryExpr), Like(Like), ILike(Like), SimilarTo(Like), Not(Box<Expr>), IsNotNull(Box<Expr>), IsNull(Box<Expr>), IsTrue(Box<Expr>), IsFalse(Box<Expr>), IsUnknown(Box<Expr>), IsNotTrue(Box<Expr>), IsNotFalse(Box<Expr>), IsNotUnknown(Box<Expr>), Negative(Box<Expr>), GetIndexedField(GetIndexedField), Between(Between), Case(Case), Cast(Cast), TryCast(TryCast), Sort(Sort), ScalarFunction { fun: BuiltinScalarFunction, args: Vec<Expr>, }, ScalarUDF { fun: Arc<ScalarUDF>, args: Vec<Expr>, }, AggregateFunction(AggregateFunction), WindowFunction(WindowFunction), AggregateUDF { fun: Arc<AggregateUDF>, args: Vec<Expr>, filter: Option<Box<Expr>>, }, InList { expr: Box<Expr>, list: Vec<Expr>, negated: bool, }, Exists { subquery: Subquery, negated: bool, }, InSubquery { expr: Box<Expr>, subquery: Subquery, negated: bool, }, ScalarSubquery(Subquery), Wildcard, QualifiedWildcard { qualifier: String, }, GroupingSet(GroupingSet), Placeholder { id: String, data_type: DataType, },
}
Expand description

Expr is a central struct of DataFusion’s query API, and represent logical expressions such as A + 1, or CAST(c1 AS int).

An Expr can compute its DataType and nullability, and has functions for building up complex expressions.

Examples

Create an expression c1 referring to column named “c1”

let expr = col("c1");
assert_eq!(expr, Expr::Column(Column::from_name("c1")));

Create the expression c1 + c2 to add columns “c1” and “c2” together

let expr = col("c1") + col("c2");

assert!(matches!(expr, Expr::BinaryExpr { ..} ));
if let Expr::BinaryExpr(binary_expr) = expr {
  assert_eq!(*binary_expr.left, col("c1"));
  assert_eq!(*binary_expr.right, col("c2"));
  assert_eq!(binary_expr.op, Operator::Plus);
}

Create expression c1 = 42 to compare the value in column “c1” to the literal value 42

let expr = col("c1").eq(lit(42_i32));

assert!(matches!(expr, Expr::BinaryExpr { .. } ));
if let Expr::BinaryExpr(binary_expr) = expr {
  assert_eq!(*binary_expr.left, col("c1"));
  let scalar = ScalarValue::Int32(Some(42));
  assert_eq!(*binary_expr.right, Expr::Literal(scalar));
  assert_eq!(binary_expr.op, Operator::Eq);
}

Variants§

§

Alias(Box<Expr>, String)

An expression with a specific name.

§

Column(Column)

A named reference to a qualified filed in a schema.

§

ScalarVariable(DataType, Vec<String>)

A named reference to a variable in a registry.

§

Literal(ScalarValue)

A constant value.

§

BinaryExpr(BinaryExpr)

A binary expression such as “age > 21”

§

Like(Like)

LIKE expression

§

ILike(Like)

Case-insensitive LIKE expression

§

SimilarTo(Like)

LIKE expression that uses regular expressions

§

Not(Box<Expr>)

Negation of an expression. The expression’s type must be a boolean to make sense.

§

IsNotNull(Box<Expr>)

Whether an expression is not Null. This expression is never null.

§

IsNull(Box<Expr>)

Whether an expression is Null. This expression is never null.

§

IsTrue(Box<Expr>)

Whether an expression is True. Boolean operation

§

IsFalse(Box<Expr>)

Whether an expression is False. Boolean operation

§

IsUnknown(Box<Expr>)

Whether an expression is Unknown. Boolean operation

§

IsNotTrue(Box<Expr>)

Whether an expression is not True. Boolean operation

§

IsNotFalse(Box<Expr>)

Whether an expression is not False. Boolean operation

§

IsNotUnknown(Box<Expr>)

Whether an expression is not Unknown. Boolean operation

§

Negative(Box<Expr>)

arithmetic negation of an expression, the operand must be of a signed numeric data type

§

GetIndexedField(GetIndexedField)

Returns the field of a [arrow::array::ListArray] or [arrow::array::StructArray] by key

§

Between(Between)

Whether an expression is between a given range.

§

Case(Case)

The CASE expression is similar to a series of nested if/else and there are two forms that can be used. The first form consists of a series of boolean “when” expressions with corresponding “then” expressions, and an optional “else” expression.

CASE WHEN condition THEN result [WHEN …] [ELSE result] END

The second form uses a base expression and then a series of “when” clauses that match on a literal value.

CASE expression WHEN value THEN result [WHEN …] [ELSE result] END

§

Cast(Cast)

Casts the expression to a given type and will return a runtime error if the expression cannot be cast. This expression is guaranteed to have a fixed type.

§

TryCast(TryCast)

Casts the expression to a given type and will return a null value if the expression cannot be cast. This expression is guaranteed to have a fixed type.

§

Sort(Sort)

A sort expression, that can be used to sort values.

§

ScalarFunction

Fields

§fun: BuiltinScalarFunction

The function

§args: Vec<Expr>

List of expressions to feed to the functions as arguments

Represents the call of a built-in scalar function with a set of arguments.

§

ScalarUDF

Fields

§fun: Arc<ScalarUDF>

The function

§args: Vec<Expr>

List of expressions to feed to the functions as arguments

Represents the call of a user-defined scalar function with arguments.

§

AggregateFunction(AggregateFunction)

Represents the call of an aggregate built-in function with arguments.

§

WindowFunction(WindowFunction)

Represents the call of a window function with arguments.

§

AggregateUDF

Fields

§fun: Arc<AggregateUDF>

The function

§args: Vec<Expr>

List of expressions to feed to the functions as arguments

§filter: Option<Box<Expr>>

Optional filter applied prior to aggregating

aggregate function

§

InList

Fields

§expr: Box<Expr>

The expression to compare

§list: Vec<Expr>

A list of values to compare against

§negated: bool

Whether the expression is negated

Returns whether the list contains the expr value.

§

Exists

Fields

§subquery: Subquery

subquery that will produce a single column of data

§negated: bool

Whether the expression is negated

EXISTS subquery

§

InSubquery

Fields

§expr: Box<Expr>

The expression to compare

§subquery: Subquery

subquery that will produce a single column of data to compare against

§negated: bool

Whether the expression is negated

IN subquery

§

ScalarSubquery(Subquery)

Scalar subquery

§

Wildcard

Represents a reference to all fields in a schema.

§

QualifiedWildcard

Fields

§qualifier: String

Represents a reference to all fields in a specific schema.

§

GroupingSet(GroupingSet)

List of grouping set expressions. Only valid in the context of an aggregate GROUP BY expression list

§

Placeholder

Fields

§id: String

The identifier of the parameter (e.g, $1 or $foo)

§data_type: DataType

The type the parameter will be filled in with

A place holder for parameters in a prepared statement (e.g. $foo or $1)

Implementations§

Returns the name of this expression as it should appear in a schema. This name will not include any CAST expressions.

👎Deprecated since 14.0.0: please use display_name instead

Returns the name of this expression as it should appear in a schema. This name will not include any CAST expressions.

Returns a full and complete string representation of this expression.

Return String representation of the variant represented by self Useful for non-rust based bindings

Return self == other

Return self != other

Return self > other

Return self >= other

Return self < other

Return self <= other

Return self && other

Return self || other

Return !self

Calculate the modulus of two expressions. Return self % other

Return self LIKE other

Return self NOT LIKE other

Return self ILIKE other

Return self NOT ILIKE other

Return self AS name alias expression

Remove an alias from an expression if one exists.

Return self IN <list> if negated is false, otherwise return self NOT IN <list>.a

Return `IsNull(Box(self))

Return `IsNotNull(Box(self))

Create a sort expression from an existing expression.

let sort_expr = col("foo").sort(true, true); // SORT ASC NULLS_FIRST

Return IsTrue(Box(self))

Return IsNotTrue(Box(self))

Return IsFalse(Box(self))

Return IsNotFalse(Box(self))

Return IsUnknown(Box(self))

Return IsNotUnknown(Box(self))

Return all referenced columns of this expression.

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more

Format expressions for display as part of a logical plan. In many cases, this will produce similar output to Expr.name() except that column names will be prefixed with ‘#’.

Formats the value using the given formatter. Read more

Format expressions for display as part of a logical plan. In many cases, this will produce similar output to Expr.name() except that column names will be prefixed with ‘#’.

Formats the value using the given formatter. Read more
The resulting type after applying the / operator.
Performs the / operation. Read more

Performs a depth first walk of an expression and its children to rewrite an expression, consuming self producing a new Expr.

Implements a modified version of the visitor pattern to separate algorithms from the structure of the Expr tree and make it easier to write new, efficient expression transformation algorithms.

For an expression tree such as

BinaryExpr (GT)
   left: Column("foo")
   right: Column("bar")

The nodes are visited using the following order

pre_visit(BinaryExpr(GT))
pre_visit(Column("foo"))
mutate(Column("foo"))
pre_visit(Column("bar"))
mutate(Column("bar"))
mutate(BinaryExpr(GT))

If an Err result is returned, recursion is stopped immediately

If false is returned on a call to pre_visit, no children of that expression are visited, nor is mutate called on that expression

Returns the [arrow::datatypes::DataType] of the expression based on ExprSchema

Note: DFSchema implements ExprSchema.

Errors

This function errors when it is not possible to compute its [arrow::datatypes::DataType]. This happens when e.g. the expression refers to a column that does not exist in the schema, or when the expression is incorrectly typed (e.g. [utf8] + [bool]).

Returns the nullability of the expression based on ExprSchema.

Note: DFSchema implements ExprSchema.

Errors

This function errors when it is not possible to compute its nullability. This happens when the expression refers to a column that does not exist in the schema.

Returns a [arrow::datatypes::Field] compatible with this expression.

Wraps this expression in a cast to a target [arrow::datatypes::DataType].

Errors

This function errors when it is impossible to cast the expression to the target [arrow::datatypes::DataType].

Performs a depth first walk of an expression and its children, calling ExpressionVisitor::pre_visit and visitor.post_visit.

Implements the visitor pattern to separate expression algorithms from the structure of the Expr tree and make it easier to add new types of expressions and algorithms that walk the tree.

For an expression tree such as

BinaryExpr (GT)
   left: Column("foo")
   right: Column("bar")

The nodes are visited using the following order

pre_visit(BinaryExpr(GT))
pre_visit(Column("foo"))
post_visit(Column("foo"))
pre_visit(Column("bar"))
post_visit(Column("bar"))
post_visit(BinaryExpr(GT))

If an Err result is returned, recursion is stopped immediately

If Recursion::Stop is returned on a call to pre_visit, no children of that expression are visited, nor is post_visit called on that expression

Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
The resulting type after applying the * operator.
Performs the * operation. Read more
The resulting type after applying the ! operator.
Performs the unary ! operation. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
The resulting type after applying the % operator.
Performs the % operation. Read more
The resulting type after applying the - operator.
Performs the - operation. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Checks if this value is equivalent to the given key. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.