可加度量与可加性判断
可加度量指在任意维度上求和都有意义的量:订单金额、商品件数、支付笔数。事实表设计应优先选择可加度量,因为只有它们能自由上卷到任意维度组合。判断方法是对每个可用维度问一句「加总讲不讲得通」——讲不通的就是半可加或不可加,需要在设计时单独标注并配套口径。三类度量混存而不标注,是口径混乱的主要来源。
基本信息
| 定义 | 在任意维度上求和都有业务意义 |
|---|---|
| 典型例子 | 订单金额、商品件数、支付笔数 |
| 上卷方式 | 直接 sum,无需额外口径说明 |
| 设计要求 | 优先存可加度量,比率存分子分母 |
| 标注要求 | 半可加与不可加必须显式标注口径 |
典型使用场景
- 指标口径设计:先判定可加性,再决定存储与计算方式
- 上卷安全:报表任意维度分组求和都不会出错
- 预聚合准备:只有可加度量能在聚合表里直接 sum
- 口径评审:评审时逐度量标注属于可加、半可加还是不可加
- 对账基础:可加度量是跨系统金额对账的直接依据
- 指标层复用:不可加指标由可加分子分母在查询端组合
三类度量对照
三类度量对照
-- 可加:任意维度分组求和都有意义
SELECT region, sum(amt) AS amt FROM fact_order GROUP BY region;
-- 半可加:跨账户可加、跨时间不可加,需求明确口径
SELECT account_id, balance FROM fact_account_balance_daily
WHERE dt = '2026-10-11'; -- 期末余额
-- 不可加:先汇总分子分母再相除
SELECT sum(pay_amt) / count(distinct order_id) AS aov FROM fact_order;三类度量对照
| 类型 | 例子 | 汇总方式 |
|---|---|---|
| 可加 | 金额、件数、次数 | 直接 sum,任意维度成立 |
| 半可加 | 余额、库存、人数 | 除时间外可 sum,跨时间取期末或日均 |
| 不可加 | 比率、单价、占比 | 先汇总分子分母再相除 |
| 派生 | 同比增速、环比增速 | 对已算好的指标做运算,需固定基准 |
设计度量时先按可加性分类,再决定它落在事实表、快照表还是指标层。把半可加与不可加度量混进事实表的求和列,短期看不出问题,等到有人按错误方式上卷、报表数字被对外引用时才暴露。