@@ -153,7 +153,10 @@ pub fn prep_null_mask_filter(filter: &BooleanArray) -> BooleanArray {
153
153
BooleanArray :: new ( mask, None )
154
154
}
155
155
156
- /// Filters an [Array], returning elements matching the filter (i.e. where the values are true).
156
+ /// Returns a filtered `values` [Array] where the corresponding elements of
157
+ /// `predicate` are `true`.
158
+ ///
159
+ /// See also [`FilterBuilder`] for more control over the filtering process.
157
160
///
158
161
/// # Example
159
162
/// ```rust
@@ -170,14 +173,18 @@ pub fn filter(values: &dyn Array, predicate: &BooleanArray) -> Result<ArrayRef,
170
173
filter_array ( values, & predicate)
171
174
}
172
175
173
- /// Returns a new [RecordBatch] with arrays containing only values matching the filter.
176
+ /// Returns a filtered [RecordBatch] where the corresponding elements of
177
+ /// `predicate` are true.
178
+ ///
179
+ /// This is the equivalent of calling [filter] on each column of the [RecordBatch].
174
180
pub fn filter_record_batch (
175
181
record_batch : & RecordBatch ,
176
182
predicate : & BooleanArray ,
177
183
) -> Result < RecordBatch , ArrowError > {
178
184
let mut filter_builder = FilterBuilder :: new ( predicate) ;
179
185
if record_batch. num_columns ( ) > 1 {
180
186
// Only optimize if filtering more than one column
187
+ // Otherwise, the overhead of optimization can be more than the benefit
181
188
filter_builder = filter_builder. optimize ( ) ;
182
189
}
183
190
let filter = filter_builder. build ( ) ;
0 commit comments