下钻要守恒
维度下钻要求子项合计等于父项,差异要么为零,要么可解释。破坏守恒的典型原因是多归属:一笔订单同时属于两个类目,一个用户同属多个部门。处理办法是铺平成多行,或按权重分摊,两者都要在建模阶段明确。多归属维度用桥接表承载并附带权重列,权重合计为一,下钻才守恒,否则越往下钻,数字偏得越远。
基本信息
| 约束 | 子项合计等于父项 |
|---|---|
| 多归属 | 铺平拆行或按权重分摊 |
| 权重 | 桥接表权重合计为一 |
| 校验 | 自动对账任务每日执行 |
| 例外 | 口径差异需显式登记 |
典型使用场景
- 报表下钻:从大区到城市、从类目到子类目的逐层拆解
- 组织分析:一人多岗、一店多归属场景的归属处理
- 预算分摊:集团费用分摊到事业部与产品线
- 渠道归因:一次转化对应多个触点时的权重分配
- 下钻校验:用自动对账发现子项与父项之间的差异
- 汇总层与明细层分别下钻,两层结果应当一致
下钻校验
下钻校验
-- 下钻校验:子项合计与父项比对
SELECT sum(sub_amt) AS child_sum, max(total_amt) AS parent_amt,
sum(sub_amt) - max(total_amt) AS diff
FROM (
SELECT cat_l1, sum(amt) AS sub_amt, 0 AS total_amt
FROM fact_sale GROUP BY cat_l1
) t;
-- 多归属场景改用带权重的桥接表后重新比对处理方式对照
| 处理方式 | 适用场景 | 注意点 |
|---|---|---|
| 铺平拆行 | 多归属且需要明细追溯 | 行数膨胀,合计会翻倍 |
| 按权重分摊 | 合计必须守恒 | 权重合计数必须为一 |
| 指定主归属 | 业务上存在唯一主责 | 需业务确认主归属规则 |
| 桥接表 | 多对多关系稳定 | 需维护有效期与权重 |
多归属直接分组会放大总额:一单多类目时,总额在两个类目里各出现一次,看板合计比真实值高,而且越下钻偏差越大。
分摊权重合计必须为一:权重来自业务约定而非临时拍定,且要有生效期,组织或规则调整后旧权重需要保留历史版本。