事实表命名规范是什么
事实表命名以 fact_ 前缀加业务过程名称为主体,如 fact_order、fact_payment;需要区分粒度或刷新方式时加后缀(_di 日增量、_df 全量、_d 日快照)。度量字段用名词加语义后缀,金额明确写 amount 并在注释里标单位与币种,数量写 qty 或 cnt。时间字段至少两列:业务发生时间与数据入库时间,前者用于分析口径,后者用于问题排查与重跑定位。
基本信息
| 表名结构 | fact_<业务过程>[_粒度后缀] |
|---|---|
| 常用后缀 | _di 日增量、_df 全量快照、_d 日粒度汇总 |
| 度量命名 | 名词 + 语义后缀,如 item_amt、discount_amt、qty |
| 时间字段 | 业务时间 create_time 与入库时间 etl_time 成对出现 |
| 字段注释 | 单位、币种、是否含税必须写明 |
典型使用场景
- 新建事实表:按规范命名后,使用者不查文档也能判断粒度与刷新方式
- 血缘梳理:统一前缀让表依赖关系可脚本化扫描,排查上下游更快
- 跨团队协作:交易域与财务域表名风格一致,评审时不必先对齐命名
- 字段自查:金额字段命名与注释齐备,避免币种与含税口径被误读
- 历史表治理:存量表按规范逐步改名,把例外登记在豁免清单里
命名与字段示例
命名与字段示例
-- 表名:fact_order_di(日增量订单明细)
-- 命名三段式:前缀 + 业务过程 + 粒度后缀
order_no string COMMENT '订单号,业务键',
user_sk bigint COMMENT '用户代理键',
item_amt bigint COMMENT '商品应付金额,单位分,不含运费',
discount_amt bigint COMMENT '优惠金额,单位分,已含券与活动',
qty int COMMENT '商品件数',
create_time string COMMENT '下单时间,业务口径使用',
etl_time string COMMENT '入库时间,用于重跑与排查',命名对照
| 对象 | 规范写法 | 常见错误 |
|---|---|---|
| 事实表名 | fact_order_di | order_fact_tab 前缀后缀混乱 |
| 金额字段 | item_amt / pay_amt | amount1 / amt2 无语义 |
| 数量字段 | qty / cnt | num 分不清件数还是笔数 |
| 时间字段 | create_time / etl_time | 单个 time 字段含义不明 |
| 代理键 | user_sk | user_key 与业务键混淆 |
命名规范的价值是把隐式约定变成显式接口:使用者看到表名就知道粒度,看到 amt 就知道单位在注释里,减少每次沟通都要重新确认口径的成本。
度量字段的注释不是可选项。单位、币种、是否含税三项不全时,任何一次跨域对账都要重新翻代码确认,这是最常见的返工来源。