首页/数据/数据工程与 ETL 速查/谓词下推 Predicate Pushdown
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

谓词下推 Predicate Pushdown

把过滤条件下推到扫描层,在读数据时就跳过不满足条件的行或数据块;Parquet/ORC 依靠列统计(min/max)跳过 row group,显著减少 IO。

原理过滤条件在读取阶段生效,减少进入计算的数据
依赖列式格式的统计信息与引擎可下推的表达式
验证EXPLAIN 里查看 PushedFilters

查看下推情况

查看下推情况
EXPLAIN EXTENDED
SELECT order_id, amount FROM dwd_order
WHERE dt = '2026-10-11' AND amount > 100;   -- 关注 PushedFilters 行
UDF 包装过的条件、隐式类型转换通常无法下推;把可以下推的原始条件保留在 WHERE 外层。

易错点

  • 对同一列先 cast 再过滤,会破坏统计信息匹配,尽量让类型一致
  • 小文件里的统计信息粒度差,下推收益打折,要配合合并小文件

数据来源与参考

  • Apache Spark 官方文档:Parquet Filters / Predicate Pushdown
  • Apache ORC 官方文档:Indexes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌