基于Dask的拼花谓词下推滤波

基于Dask的拼花谓词下推滤波,dask,parquet,Dask,Parquet,在读取Dask数据帧时,如何基于拼花最小/最大值应用谓词下推过滤器 假设您有一个包含4个拼花文件的数据湖,每个文件都有昵称和年龄列。此表显示了每个文件的拼花地板文件名、年龄最小值和年龄最大值 | File | min | max | |---------------|-----|-----| | pets1.parquet | 1 | 9 | | pets2.parquet | 3 | 9 | | pets3.parquet | 2 | 4 | | pe

在读取Dask数据帧时,如何基于拼花最小/最大值应用谓词下推过滤器

假设您有一个包含4个拼花文件的数据湖,每个文件都有
昵称
年龄
列。此表显示了每个文件的拼花地板文件名、年龄最小值和年龄最大值

| File          | min | max |
|---------------|-----|-----|
| pets1.parquet | 1   | 9   |
| pets2.parquet | 3   | 9   |
| pets3.parquet | 2   | 4   |
| pets4.parquet | 7   | 12  |
假设您希望对年龄大于10的所有数据行执行分析。您知道,在执行此分析时,可以跳过
pets1.parquet
pets2.parquet
pets3.parquet
,因为这些文件中的最大年龄小于筛选查询中的最小值。跳过文件可以使某些分析运行得更快

下面是API文档中的
read\u parquet
方法签名:
dask.dataframe.read\u parquet(路径、列=None、过滤器=None、类别=None、索引=None、存储选项=None、引擎=auto、聚集统计=None、拆分行组=None、chunksize=None、**kwargs)


过滤器
参数是否有帮助?您能提供一个代码片段吗?

是的,filters参数正是您想要的,如下所示:

dask.dataframe.read_拼花地板(路径,过滤器=[('age',“>”,10)],…)

这将跳过所有行都不能满足条件的行组/文件

请注意,要使其正常工作,您可能需要
gather\u statistics=True
或全局
\u元数据
文件(其存在将取决于数据的写入方式)