-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support partition pruning during file listing #47
Comments
Hi, I'd like to work for this feature if no one plan work for it. |
@KnightChess great! can you please describe a high-level approach for the implementation here? |
support hudi internal filter, engine like datafusion or other need cover it expression to hudi partition filter. let filter_one = PartitionFilter::try_from(("shortField", "=", "100", short_field_data_type)).unwrap();
let filter_two = PartitionFilter::try_from(("shortField", ">", "100", short_field_data_type)).unwrap();
hudi_table.partition_filter_replace(vec![filter_one, filter_two]); the core struct filter define, key is partirion field, value is expression-value pub struct PartitionFilter {
/// The key of the PartitionFilter
pub key: String,
/// The value of the PartitionFilter
pub value: PartitionValue
} expression-value: reuse datafusion pub enum PartitionValue {
/// The partition value with the equal operator
Equal(ScalarValue),
/// The partition value with the not equal operator
NotEqual(ScalarValue),
/// The partition value with the greater than operator
GreaterThan(ScalarValue),
/// The partition value with the greater than or equal operator
GreaterThanOrEqual(ScalarValue),
/// The partition value with the less than operator
LessThan(ScalarValue),
/// The partition value with the less than or equal operator
LessThanOrEqual(ScalarValue),
/// The partition values with the in operator
In(Vec<ScalarValue>),
/// The partition values with the not in operator
NotIn(Vec<ScalarValue>),
} |
Provide basic table API to accept predicates like
foo > 10
orbar != A
. The partition loading for file system view should process the predicates and load relevant partitions. Just consider supportingAND
for multiple predicate string expressions.Follow up work #159 #160
The text was updated successfully, but these errors were encountered: