Struct datafusion::physical_plan::udf::ScalarUDF

source ·
pub struct ScalarUDF { /* private fields */ }
Expand description

Logical representation of a Scalar User Defined Function.

A scalar function produces a single row output for each row of input. This struct contains the information DataFusion needs to plan and invoke functions you supply such name, type signature, return type, and actual implementation.

  1. For simple use cases, use create_udf (examples in simple_udf.rs).

  2. For advanced use cases, use ScalarUDFImpl which provides full API access (examples in advanced_udf.rs).

§API Note

This is a separate struct from ScalarUDFImpl to maintain backwards compatibility with the older API.

Implementations§

source§

impl ScalarUDF

source

pub fn new( name: &str, signature: &Signature, return_type: &Arc<dyn Fn(&[DataType]) -> Result<Arc<DataType>, DataFusionError> + Send + Sync>, fun: &Arc<dyn Fn(&[ColumnarValue]) -> Result<ColumnarValue, DataFusionError> + Send + Sync> ) -> ScalarUDF

👎Deprecated since 34.0.0: please implement ScalarUDFImpl instead

Create a new ScalarUDF from low level details.

See ScalarUDFImpl for a more convenient way to create a ScalarUDF using trait objects

source

pub fn new_from_impl<F>(fun: F) -> ScalarUDF
where F: ScalarUDFImpl + 'static,

Create a new ScalarUDF from a [ScalarUDFImpl] trait object

Note this is the same as using the From impl (ScalarUDF::from)

source

pub fn inner(&self) -> Arc<dyn ScalarUDFImpl>

Return the underlying ScalarUDFImpl trait object for this function

source

pub fn with_aliases( self, aliases: impl IntoIterator<Item = &'static str> ) -> ScalarUDF

Adds additional names that can be used to invoke this function, in addition to name

If you implement ScalarUDFImpl directly you should return aliases directly.

source

pub fn call(&self, args: Vec<Expr>) -> Expr

Returns a Expr logical expression to call this UDF with specified arguments.

This utility allows using the UDF without requiring access to the registry.

source

pub fn name(&self) -> &str

Returns this function’s name.

See ScalarUDFImpl::name for more details.

source

pub fn aliases(&self) -> &[String]

Returns the aliases for this function.

See ScalarUDF::with_aliases for more details

source

pub fn signature(&self) -> &Signature

Returns this function’s Signature (what input types are accepted).

See ScalarUDFImpl::signature for more details.

source

pub fn return_type_from_exprs( &self, args: &[Expr], schema: &dyn ExprSchema, arg_types: &[DataType] ) -> Result<DataType, DataFusionError>

The datatype this function returns given the input argument input types. This function is used when the input arguments are Exprs.

See ScalarUDFImpl::return_type_from_exprs for more details.

source

pub fn simplify( &self, args: Vec<Expr>, info: &dyn SimplifyInfo ) -> Result<ExprSimplifyResult, DataFusionError>

Do the function rewrite

See ScalarUDFImpl::simplify for more details.

source

pub fn invoke( &self, args: &[ColumnarValue] ) -> Result<ColumnarValue, DataFusionError>

Invoke the function on args, returning the appropriate result.

See ScalarUDFImpl::invoke for more details.

source

pub fn fun( &self ) -> Arc<dyn Fn(&[ColumnarValue]) -> Result<ColumnarValue, DataFusionError> + Send + Sync>

Returns a ScalarFunctionImplementation that can invoke the function during execution

source

pub fn monotonicity(&self) -> Result<Option<Vec<Option<bool>>>, DataFusionError>

This function specifies monotonicity behaviors for User defined scalar functions.

See ScalarUDFImpl::monotonicity for more details.

Trait Implementations§

source§

impl Clone for ScalarUDF

source§

fn clone(&self) -> ScalarUDF

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ScalarUDF

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<F> From<F> for ScalarUDF
where F: ScalarUDFImpl + Send + Sync + 'static,

source§

fn from(fun: F) -> ScalarUDF

Converts to this type from the input type.
source§

impl Hash for ScalarUDF

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for ScalarUDF

source§

fn eq(&self, other: &ScalarUDF) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for ScalarUDF

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V