区间层次是什么
区间层次指成员深度不齐且允许同层跳级的结构,比如组织架构里某个部门直接挂在事业部下一层,或者类目里存在中间层缺位的分支。表达上通常用深度列配合祖先路径:深度列标注成员所在层级,路径列描述完整上级链,任意层级聚合时按深度列过滤即可。关键约定是跳级成员的归属:它算作哪一层参与汇总,必须在建模时与业务确认并文档化,否则层级汇总会互相打架。
基本信息
| 核心要素 | 深度列 + 祖先路径(或桥接表) |
|---|---|
| 主要用途 | 按任意层级聚合,兼顾深度不齐的分支 |
| 必须约定 | 跳级成员归属哪一层参与汇总 |
| 校验 | 深度列与路径层数是否一致,是否存在孤岛分支 |
典型使用场景
- 组织结构调整:合并拆分后部分部门跳级,深度列配合路径可稳定聚合
- 类目体系治理:不同品类深度相差数级,需按深度分别统计
- 区域划分:直辖市与省份并存时层级不一致,跳级归属需明确
- 渠道体系分析:代理层级不齐,按深度过滤能得到各层规模
- 口径评审:跳级成员的归属规则是评审必问项,需有文档结论
按深度聚合
按深度聚合
-- 按深度不超过两层的成员聚合(跳级成员按约定归层)
SELECT sum(f.amt) AS amt
FROM fact_sale f
JOIN dim_cat c ON f.cat_id = c.cat_id
WHERE c.depth_level <= 2; -- 深度列决定参与汇总的层级
-- 校验:深度列是否与路径层数一致
SELECT cat_id, depth_level, path
FROM dim_cat
WHERE depth_level <> length(path) - length(replace(path, '/', '')) + 1;
-- 结果非空说明深度列与路径层数不匹配,需要回刷跳级成员处理
| 情形 | 处理方式 | 影响 |
|---|---|---|
| 跳级且需计入上层 | 按约定归入最近上层 | 需在文档中写明规则 |
| 跳级且独立成层 | 单列一层统计 | 层级报表层数会多于预期 |
| 深度列滞后 | 回刷深度与路径 | 否则层级汇总与明细不一致 |
| 分支孤岛 | 补上级关系或归入未知 | 孤岛分支在层级汇总中整体消失 |
区间层次的聚合口径必须与业务确认,特别是跳级成员的归属。同一个部门算作二级还是三级,直接决定各层规模数字,且两种口径都能自圆其说。
深度列属于派生字段,一旦结构变化就要回刷。把它当作手工维护的静态字段,是层级汇总长期对不上明细的典型原因。