首页/数据/数仓建模速查/分区字段位置与分区裁剪
分层与规范64 条

分区字段位置与分区裁剪

分区字段必须出现在 WHERE 中才能触发裁剪;把分区条件包在函数里(如 substr(dt,1,7))会失效,应改用范围条件。

数仓建模速查数据更新于 2026-10-12
裁剪条件分区列直接比较
失效写法函数包裹分区列
替代范围查询
验证看执行计划扫描分区数

裁剪写法

裁剪写法
-- 可裁剪
SELECT * FROM dwd_trade_order_di WHERE dt BETWEEN '2026-10-01' AND '2026-10-12';

-- 不可裁剪(分区列被函数包裹)
SELECT * FROM dwd_trade_order_di WHERE substr(dt,1,7)='2026-10';
对账与巡检脚本尤其要检查这一点,否则每次错扫多年数据。

易错点

  • 分区列上使用函数,全表扫描

数据来源与参考

  • Hive 官方文档:LanguageManual DML
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌