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 RecordBatch
es 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 returnedfalse
ornull
: 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: ProjectionMask
Implementations§
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