首页/数据/数仓建模速查/一致性维度 Conformed Dimension
建模基础69 条

一致性维度 Conformed Dimension

一致性维度是在多个事实表间共享、定义与取值一致的维度;它让不同业务过程能在同一维度上对齐汇总与对比。

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

一致性维度是什么

一致性维度是在多个事实表之间共享、且定义与取值完全一致的维度:同一个名称对应同一套编码、同一套层级、同一套口径。它让订单、支付、库存这些不同业务过程能在同一维度上对齐汇总与对比,是星座模型成立的前提。

基本信息

核心要求同名、同定义、同取值
载体形式公共维度表,或定义一致的视图与同构表
收益跨过程下钻、汇总与对比,指标可对齐
维护方式统一由维度 Owner 维护,变更走评审
判定标准同一条维度记录在各过程解析出的含义相同

典型使用场景

  • 跨过程分析:下单与支付按同一渠道维度对齐,比较转化与金额
  • 总线矩阵落地:矩阵中的列必须是一致性维度,否则只是同名列
  • 多源合并:客户维度来自多个系统,需要统一的编码与层级
  • 指标对齐:同一指标的分子分母来自不同事实表,维度不一致就无法相除
  • 权限控制:按一致的组织或门店维度统一做行级权限

跨事实表共享维度

跨事实表共享维度
-- 订单事实与库存事实都关联同一张商品维度
-- 因此可以按同一类目口径对比销量与库存
SELECT d.cat_l1_name,
       sum(o.qty)        AS sale_qty,     -- 来自订单事实
       sum(i.stock_qty)  AS stock_qty     -- 来自库存事实
FROM dim_product d                          -- 一致性维度只关联一次
LEFT JOIN fact_order o ON o.product_sk = d.product_sk
LEFT JOIN fact_stock i ON i.product_sk = d.product_sk
GROUP BY d.cat_l1_name;

-- 前提:两张事实表的 product_sk 指向同一套维度版本与类目口径

相似情况辨析

情形是否一致性维度处理方式
同名、同定义、同取值是直接共享,可跨过程汇总
同名不同口径否先统一口径,或显式区分为两个维度
同义不同名否统一命名后再共享,否则使用者会误以为无关
取值一致但编码不同否建立映射关系,统一到一套代理键
一致性不等于物理上必须是同一张表。允许通过视图、同构表或统一加工流程实现,关键是取值与定义严格一致;物理复制而各自维护通常很快出现取值漂移。
判断维度是否真一致的实用方法:把它关联到两个不同事实表上分别汇总,结果能对得上且能互相解释。如果对不上,说明只是同名列而不是一致性维度。

易错点

  • 同名维度两套口径(例如两套类目体系并存),跨过程汇总时数字对不上且无法判断谁错
  • 为省事复制维度表各自维护,取值逐渐漂移,一年后两张表已经无法对齐
  • 把只是名字相同的两个维度当成一致性维度使用,跨过程下钻产生无意义结果
  • 一致性维度变更不通知下游,各事实表引用的版本不一致,报表在不同时间口径下跳变

数据来源与参考

  • Kimball 方法论:一致性维度
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌