首页/数据/数仓建模速查/分区字段命名:统一 dt 与 dh
分层与规范64 条

分区字段命名:统一 dt 与 dh

分区字段全库统一:日分区 dt(yyyy-MM-dd)、小时分区 dh(yyyy-MM-dd HH)或 dt+hh 两级;统一命名让跨表脚本可以直接传参。

数仓建模速查数据更新于 2026-10-13

分区字段命名约定

分区字段名与取值格式也要全库统一:日分区统一叫 dt,取值 yyyy-MM-dd;小时分区要么用 hh(00-23),要么用 dt 加 hh 两级分区。统一的价值在于脚本可以参数化——跨表复用的调度模板只需要替换日期变量,不必为每张表单独记住分区字段名和格式。

基本信息

日分区dt,格式 yyyy-MM-dd
小时分区hh(00-23),或 dt + hh 两级分区
取值类型用字符串,便于裁剪与传参
跨表复用同名同格式才能直接参数化
需要避免分区值里出现斜杠、中文或时分秒

典型使用场景

  • 日常调度传参:所有表都用 dt,调度模板可以统一替换日期变量
  • 小时级明细:加 hh 二级分区,既能按天重跑也能只补某个小时
  • 跨表关联:分区字段同名同格式,才能直接写进同一段 SQL
  • 历史回刷:按 dt 区间批量重跑,脚本不必为不同表改字段名
  • 新表接入检查:接入时先确认分区字段是否符合约定

命名与取值

场景推荐命名取值示例
日粒度,绝大多数表dt2026-10-13
小时粒度hh,或二级分区 dt + hh00 到 23
月粒度汇总表month2026-10
多级分区示例dt + city_id2026-10-13 与 310000

两级分区

两级分区
CREATE TABLE dwd_flow_event_di (
  event_id STRING,
  user_id  STRING
)
PARTITIONED BY (
  dt STRING COMMENT '日期 yyyy-MM-dd',   -- 一级分区:天
  hh STRING COMMENT '小时 00-23'         -- 二级分区:小时
);
-- 查询时两级条件都要给,否则裁剪不彻底
SELECT count(1) FROM dwd_flow_event_di WHERE dt='2026-10-13' AND hh='08';
分区值写成 2026/10/12 带斜杠,会在文件系统上形成多级目录,分区数量凭空翻倍,元数据压力与清理难度同时上升;分区值里带时分秒也会让分区数量失控。
分区字段名一旦上线就很难改:所有下游脚本、调度模板与 BI 数据集都引用它。新表接入时按规范检查一遍,比事后统一改名便宜得多。
小时分区字段建议直接用 hh,而不是写成 hour 或 hour_id:hh 简短,与 dt 风格一致,跨表引用时也不容易写错。

易错点

  • 分区值格式不统一:10-12 与 2026-10-12 混用,跨表查询直接查不出数据
  • 分区值里带斜杠或时分秒:文件系统目录层级爆炸,分区数量失控
  • 日分区字段叫法各异(dt、day、date):脚本无法参数化复用
  • 两级分区只给一级条件:小时级明细被整日扫描,成本高出数倍
  • 分区字段名与其他表不一致:同一段 SQL 关联多表时无法统一引用

数据来源与参考

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