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