数据仓库:fact table中semi-additive与non-additive度量的区别
事实表半加性度量与非加性度量核心差异
所有事实表度量的加性分类,核心判断标准是沿关联维度做SUM加总后的结果是否具备实际业务意义,二者的核心差异可以从定义、典型场景、汇总规则三个层面明确区分,完全匹配Kimball维度建模的标准定义,也覆盖考试常见考点。
基础定义边界
- 半加性度量:仅能沿部分维度做SUM加总,沿剩余特定维度加总的结果没有业务意义,属于「部分可加、部分不可加」的类型。
- 非加性度量:沿任何维度做SUM加总的结果都没有业务意义,属于「完全不可直接加总」的类型。
半加性度量典型场景与示例
半加性度量绝大多数是时点快照类的绝对值指标,最常见的不可加维度是时间维度:
- 示例1:银行账户余额。同一统计时点下,沿客户、地区、账户类型维度加总所有账户的余额,得到的全行总存款数据是有效的;但沿时间维度把同一个账户1-12月的月末余额加总,得到的数值没有任何业务含义,不能代表该账户的年度总余额。
- 示例2:仓库SKU库存数。同一统计时点下,沿仓库、商品类目维度加总所有仓库的某SKU库存,得到的全国总库存数据是有效的;但沿时间维度把同个SKU一个月内每天的库存数加总,得到的数值不能代表月度总库存,没有业务意义。
- 汇总规则:可加维度直接用SUM汇总;不可加维度(通常是时间)不能用SUM,一般根据业务需求取MAX/MIN(如月度最高库存)、AVG(如月均账户余额)、期末首末值(如取当月最后一天库存作为月度库存值)。
非加性度量典型场景与示例
非加性度量绝大多数是比率、比例、单位均值类的相对衍生指标,不存在任何可以直接SUM加总的维度:
- 示例1:商品折扣率。单款SKU折扣率8折、另一款7折,无论沿商品类目、门店、时间哪个维度加总折扣率,得到的结果都没有业务意义——你不能说两个商品的总折扣是1.5折。
- 示例2:渠道转化率。A渠道访客转化率3%、B渠道5%,无论沿渠道、活动、时间哪个维度加总转化率,得到的结果都完全无效,不能代表整体转化率是8%。
- 示例3:商品销售单价。同一款SKU甲门店售价10元、乙门店售价12元,无论沿门店、时间哪个维度加总单价,得到的22元结果都不代表任何实际业务含义。
- 汇总规则:永远不能直接对指标本身做SUM汇总,必须先拆分出指标计算用到的分子、分母,将分子、分母分别按维度加总后,再做除法得到汇总后的指标值。比如计算整体转化率,要先把所有渠道的总访客数、总转化人数分别加总,再用总转化人数除以总访客数得到结果,不能直接加总各渠道转化率。
考试快速判断技巧
拿到一个指标先做两步验证:
- 先试沿非时间维度(比如地区、商品、客户)加总,看结果有没有业务意义,如果完全没意义,直接判定为非加性度量;
- 如果非时间维度加总有效,再试沿时间维度加总,如果时间维度加总结果无效,就判定为半加性度量;如果所有维度加总都有效,就是全加性度量。
| 对比项 | 半加性度量 | 非加性度量 |
|---|---|---|
| 可加范围 | 大部分维度可直接SUM,仅特定维度(多为时间)不可加 | 所有维度都不能直接SUM |
| 指标属性 | 多为时点点位统计的绝对值 | 多为相对值、比率、单位均值 |
| 常见错误 | 把12个月的月末库存加总计算年度库存 | 把不同商品的毛利率加总计算整体毛利率 |
内容的提问来源于stack exchange,提问作者user2205174
相关产品推荐
相关产品推荐

