维度建模四步法

Kimball 四步法:① 选业务过程 ② 声明粒度 ③ 确定维度 ④ 确定事实(度量)。四步里粒度最关键,粒度定错后续所有汇总都要返工。

四步法是什么

Kimball 维度建模四步法是设计事实表的固定顺序:① 选业务过程(一次可度量的事件,如下单、支付、发货)② 声明粒度(一行代表什么)③ 确定维度(谁、何时、何地、何物、何种方式)④ 确定事实(金额、数量、时长等度量)。这个顺序不能颠倒,尤其粒度必须在选维度之前定死——粒度定错,后续所有汇总、关联和口径都要返工。

基本信息

适用场景数仓明细层与集市层的建表设计
第一步业务过程下单、支付、发货、退款等可度量事件
第二步粒度一行代表什么:一单、一行明细、一天状态
第四步事实可加度量、半可加度量与不可加度量

典型使用场景

  • 新增业务过程建模:先与业务确认事件定义,再定粒度
  • 口径争议复盘:回到粒度声明判断两边说的是不是同一批数据
  • 历史表重构:发现粒度过粗装不下维度组合时重新设计
  • 跨团队对齐:把四步结论写进建表注释,下游不用猜
  • 指标溯源:从指标反查它依赖的过程、粒度与度量定义

四步落地示例

四步落地示例
业务过程:支付                        # 一次可度量的业务事件
粒度:一个支付单一行(含分次支付拆分)  # 一行代表什么,必须唯一确定
维度:日期、用户、商户、渠道、支付方式   # 谁、何时、何地、何物、何种方式
事实:支付金额(可加)、手续费(可加)、支付时长(不可加)

四步的自检问题

步骤要回答的问题答错的代价
业务过程要度量的是哪一类事件不同事件混在一张表,指标口径互串
粒度一行代表什么行含义不唯一,下游各算各的
维度哪些描述属性要参与分析维度缺失,后续只能重刷历史
事实度量是可加、半可加还是不可加比率类度量被直接求和,汇总必然失真
粒度声明要写进建表注释与文档:没有粒度说明的明细表,下游只能靠猜,这是口径分歧最常见的源头。
先定维度再定粒度是最常见的返工原因:维度组合一旦超出粒度承载能力,明细表就无法回答新问题,只能重建并回刷历史。

易错点

  • 粒度声明含糊(例如只写「订单相关数据」),不同开发者写入的行含义不一致
  • 先定维度后定粒度,明细表装不下新的维度组合,只能重建
  • 把不可加度量(比率、单价)直接存进事实表并参与求和,汇总结果失真
  • 不同业务过程混装在一张表(下单与支付合表),同一指标在两条链路算出两个数

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》维度建模四步法
  • 行业维度建模实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌