Struct datafusion_physical_expr::expressions::CaseExpr
source · pub struct CaseExpr { /* private fields */ }
Expand description
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
Implementations
sourceimpl CaseExpr
impl CaseExpr
sourcepub fn try_new(
expr: Option<Arc<dyn PhysicalExpr>>,
when_then_expr: Vec<(Arc<dyn PhysicalExpr>, Arc<dyn PhysicalExpr>)>,
else_expr: Option<Arc<dyn PhysicalExpr>>
) -> Result<Self>
pub fn try_new(
expr: Option<Arc<dyn PhysicalExpr>>,
when_then_expr: Vec<(Arc<dyn PhysicalExpr>, Arc<dyn PhysicalExpr>)>,
else_expr: Option<Arc<dyn PhysicalExpr>>
) -> Result<Self>
Create a new CASE WHEN expression
sourcepub fn expr(&self) -> &Option<Arc<dyn PhysicalExpr>>
pub fn expr(&self) -> &Option<Arc<dyn PhysicalExpr>>
Optional base expression that can be compared to literal values in the “when” expressions
sourcepub fn when_then_expr(
&self
) -> &[(Arc<dyn PhysicalExpr>, Arc<dyn PhysicalExpr>)]
pub fn when_then_expr(
&self
) -> &[(Arc<dyn PhysicalExpr>, Arc<dyn PhysicalExpr>)]
One or more when/then expressions
sourcepub fn else_expr(&self) -> Option<&Arc<dyn PhysicalExpr>>
pub fn else_expr(&self) -> Option<&Arc<dyn PhysicalExpr>>
Optional “else” expression
Trait Implementations
sourceimpl PhysicalExpr for CaseExpr
impl PhysicalExpr for CaseExpr
sourcefn data_type(&self, input_schema: &Schema) -> Result<DataType>
fn data_type(&self, input_schema: &Schema) -> Result<DataType>
Get the data type of this expression, given the schema of the input
sourcefn nullable(&self, input_schema: &Schema) -> Result<bool>
fn nullable(&self, input_schema: &Schema) -> Result<bool>
Determine whether this expression is nullable, given the schema of the input
sourcefn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue>
fn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue>
Evaluate an expression against a RecordBatch
sourcefn children(&self) -> Vec<Arc<dyn PhysicalExpr>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A>where
A: Allocator,
fn children(&self) -> Vec<Arc<dyn PhysicalExpr>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A>where
A: Allocator,
A: Allocator,
Get a list of child PhysicalExpr that provide the input for this expr.
sourcefn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn PhysicalExpr>>
) -> Result<Arc<dyn PhysicalExpr>>
fn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn PhysicalExpr>>
) -> Result<Arc<dyn PhysicalExpr>>
Returns a new PhysicalExpr where all children were replaced by new exprs.
sourcefn evaluate_selection(
&self,
batch: &RecordBatch,
selection: &BooleanArray
) -> Result<ColumnarValue>
fn evaluate_selection(
&self,
batch: &RecordBatch,
selection: &BooleanArray
) -> Result<ColumnarValue>
Evaluate an expression against a RecordBatch after first applying a
validity array Read more
sourcefn expr_stats(&self) -> Arc<dyn PhysicalExprStats>
fn expr_stats(&self) -> Arc<dyn PhysicalExprStats>
Return the expression statistics for this expression. This API is currently experimental.
Auto Trait Implementations
impl !RefUnwindSafe for CaseExpr
impl Send for CaseExpr
impl Sync for CaseExpr
impl Unpin for CaseExpr
impl !UnwindSafe for CaseExpr
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more