不可加度量是什么
不可加度量指在任何维度上求和都没有意义的量:毛利率、客单价、转化率、留存率、单价、比率与占比。它们不是可加量,跨渠道、跨品类甚至跨时间相加都得不到正确结果。标准做法是不在事实表存最终比率,只存可加的分子与分母(支付金额与订单数、成交人数与访问人数),由查询端按口径现算,并把口径写进指标定义,避免不同人用不同分母算出不同数字。
基本信息
| 典型度量 | 毛利率、客单价、转化率、留存率、单价 |
|---|---|
| 存储方案 | 只存可加分子与分母,不存最终比率 |
| 计算位置 | 查询端或指标层,按需相除 |
| 口径要求 | 分子分母定义必须写进指标字典 |
| 命名规范 | rate 后缀表示比率,禁止与其他度量同名 |
典型使用场景
- 客单价:支付金额除以订单数,不能对各渠道客单价求平均
- 毛利率:毛利除以收入,跨品类汇总要重算而不是平均
- 转化率:下单人数除以访问人数,分子分母来自两张事实
- 留存率:同期群口径,分母是当期新增,分子是后续仍活跃的人数
- 单价与均价:件均价按金额除以件数,直接平均会受高价商品权重干扰
- 占比与份额:某品类占比等于该品类金额除以总额,汇总前必须重算
比率需重算
比率需重算
-- 正确:先汇总分子分母,再相除
SELECT sum(pay_amt) / count(distinct order_id) AS aov
FROM fact_order
WHERE dt = '2026-10-11';
-- 错误直观演示:各渠道客单价求平均,与整体客单价不等
SELECT avg(channel_aov) AS wrong_aov
FROM (SELECT channel,
sum(pay_amt) / count(distinct order_id) AS channel_aov
FROM fact_order WHERE dt = '2026-10-11'
GROUP BY channel) t;
-- 环比:两个区间的比率都要各自重算后再比较,不能对结果做减法以外的合并
-- 对比率做 sum 或 avg 都会得到没有业务含义的数字度量类型对照
| 类型 | 例子 | 汇总方式 |
|---|---|---|
| 可加 | 金额、件数、次数 | 直接 sum,任意维度都成立 |
| 半可加 | 余额、库存、人数 | 除时间外可 sum,跨时间取期末或日均 |
| 不可加 | 毛利率、客单价、转化率 | 先汇总分子分母再相除,跨维度必须重算 |
| 派生 | 同比增速、环比增速 | 对已算好的指标再做运算,需固定基准口径 |
只存比率不存分母,后果是后续任何按新维度拆分的需求都得回到明细重算,等于没有复用价值。凡是要进指标体系的比率,都应同时落分子与分母两个可加度量。