维度表命名与字段规范
维度表以 dim_ 前缀加主体名称命名,如 dim_user、dim_shop,主体名用单数业务概念。主键字段统一用 xxx_sk 后缀,业务键用 xxx_id,描述字段用业务术语而不是缩写,时间字段声明起止与加载时间。规范统一之后,跨表取数不必先查文档:看到 _sk 就知道是代理键,看到 _id 就知道是源系统编码。存量表与规范的差异要登记在豁免清单里,而不是让规范形同虚设。
基本信息
| 表名 | dim_<主体>,如 dim_user、dim_shop |
|---|---|
| 主键 | xxx_sk 代理键;业务键 xxx_id |
| 描述字段 | 业务术语全称,避免无语义缩写 |
| 时间字段 | start_dt / end_dt / etl_time 成对声明 |
| 豁免管理 | 存量差异登记清单并逐步收敛 |
典型使用场景
- 新建维表:按规范命名后使用者无需查文档即可判断字段含义
- 跨表排查:统一后缀让血缘与字段扫描可脚本化执行
- 老表治理:存量表按规范逐步改名,例外登记在豁免清单
- 评审验收:命名作为交付检查项之一,减少后续沟通成本
- 培训材料:命名规范是新人最容易记住也最快见效的约定
维表字段示例
维表字段示例
-- dim_shop:命名可自解释
-- shop_sk 代理键,维表主键(版本唯一)
-- shop_id 业务键,源系统门店编码
-- shop_name 门店名称,业务术语全称
-- city_code 城市编码,指向地区维度
-- start_dt 版本生效日期
-- end_dt 版本失效日期(当前行取远期极大值)
-- is_current 当前版本标志
-- etl_time 入库时间,用于排查与重跑
SELECT shop_sk, shop_name FROM dim_shop WHERE is_current = 1; -- 取当前版本命名对照
| 对象 | 规范写法 | 常见问题 |
|---|---|---|
| 表名 | dim_shop | shop_dim / tb_shop 风格混杂 |
| 代理键 | shop_sk | shop_key 与业务键难区分 |
| 业务键 | shop_id | 直接用 id,来源不明 |
| 时间字段 | start_dt / end_dt | 单个 dt 无法判断含义 |
| 同义词 | 统一用 shop 不用 store | 同义多名让下游反复猜 |
命名规范的价值在于把隐性约定变成可检查的接口。规范只写不查的团队,存量表名会继续混乱,新表也会逐渐偏离。
同一业务概念在不同表里出现多个名字(shop_name 与 store_name)时,下游要么反复询问,要么误以为两者不同,造成重复建模。