pub struct ArrowPredicateFn<F> {
f: F,
projection: ProjectionMask,
}Expand description
An ArrowPredicate created from an FnMut and a ProjectionMask
See RowFilter for more information on applying filters during the
Parquet decoding process.
The function is passed RecordBatches with only the columns specified in
the ProjectionMask.
The function must return a [BooleanArray] that has the same length as the
input batch where each row indicates whether the row should be returned:
true: the row should be returnedfalseornull: the row should not be returned
§Example:
Given an input schema: "a:int64", "b:int64", you can create a predicate that
evaluates b > 0 like this:
// Create a mask for selecting only the second column "b" (index 1)
let projection_mask = ProjectionMask::leaves(&descriptor, [1]);
// Closure that evaluates "b > 0"
let predicate = |batch: RecordBatch| {
let scalar_0 = Int64Array::new_scalar(0);
let column = batch.column(0).as_primitive::<Int64Type>();
// call the gt kernel to compute `>` which returns a BooleanArray
gt(column, &scalar_0)
};
// Create ArrowPredicateFn that can be passed to RowFilter
let arrow_predicate = ArrowPredicateFn::new(projection_mask, predicate);Fields§
§f: F§projection: ProjectionMaskImplementations§
Source§impl<F> ArrowPredicateFn<F>
impl<F> ArrowPredicateFn<F>
Sourcepub fn new(projection: ProjectionMask, f: F) -> Self
pub fn new(projection: ProjectionMask, f: F) -> Self
Create a new ArrowPredicateFn that invokes f on the columns
specified in projection.
Trait Implementations§
Source§impl<F> ArrowPredicate for ArrowPredicateFn<F>
impl<F> ArrowPredicate for ArrowPredicateFn<F>
Source§fn projection(&self) -> &ProjectionMask
fn projection(&self) -> &ProjectionMask
Returns the
ProjectionMask that describes the columns required
to evaluate this predicate. Read moreAuto Trait Implementations§
impl<F> Freeze for ArrowPredicateFn<F>where
F: Freeze,
impl<F> RefUnwindSafe for ArrowPredicateFn<F>where
F: RefUnwindSafe,
impl<F> Send for ArrowPredicateFn<F>where
F: Send,
impl<F> Sync for ArrowPredicateFn<F>where
F: Sync,
impl<F> Unpin for ArrowPredicateFn<F>where
F: Unpin,
impl<F> UnwindSafe for ArrowPredicateFn<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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