区域归属的历史口径
销售区域(大区、小区、负责人)会随组织调整而变化,这是维度历史归属最典型的案例。若要支持「按当时区域」统计(例如考核当时的负责人),必须版本化保留历史归属;若业务只关心当前归属,可以用类型 1 覆盖并重刷历史标签,但要明确声明「历史业绩按最新区域重述」。两种方案的结论不同,选型必须由业务确认。
基本信息
| 属性集 | 大区 / 小区 / 区域负责人 |
|---|---|
| 方案 A | 类型 2 保留历史归属,按当时区域统计 |
| 方案 B | 类型 1 覆盖 + 事实按新区域重刷 |
| 影响指标 | 责任归属、考核、返利类指标 |
| 选型依据 | 业务对考核口径与历史可比性的要求 |
| 切换要求 | 同一报表内不得新旧口径并存 |
典型使用场景
- 责任人考核:历史业绩算给当年的区域负责人,还是算给现任
- 区域合并:两个小区合并成大区后历史数据如何汇总展示
- 返利结算:返利比例按签约时的区域政策计算,需要当时归属
- 组织复盘:对比调整前后的区域产能,需要可比的区域划分
- 客户归属:大客户在区域调整后划归新团队,跟进记录连续
按当时归属与当前归属取数
按当时归属与当前归属取数
-- 当时口径:事实挂的是发生时的区域代理键
SELECT r.region_name, sum(f.amt) AS amt
FROM fact_sales f
JOIN dim_region r ON f.region_sk = r.region_sk
GROUP BY r.region_name; -- 按事实发生时的区域归属汇总
-- 当前口径:先取当前版本再关联
SELECT r.region_name, sum(f.amt) AS amt
FROM fact_sales f
JOIN dim_customer c ON f.customer_sk = c.customer_sk
JOIN dim_region r ON c.region_sk = r.region_sk AND r.is_current = 1
GROUP BY r.region_name; -- 按客户当前归属重述历史两种方案对比
| 对比项 | 类型 2 保留历史 | 类型 1 覆盖重刷 |
|---|---|---|
| 历史归属 | 可还原当时区域 | 历史被改写为当前区域 |
| 考核可用性 | 支持按当时责任人考核 | 只反映当前组织 |
| 维护成本 | 成员版本多,加工复杂 | 维护简单,重刷有成本 |
| 跨期可比 | 区域调整后趋势断层 | 口径统一,便于同比 |
两个方案对责任归属类指标影响很大,选型必须与业务确认考核口径:同一套数据同时支持两套口径时,应分别在事实层与客户维层面提供入口,而不是让报表各自决定。
版本化之后要保证旧事实已正确关联到对应版本:如果历史事实仍在引用旧代理键而维度已覆盖更新,就会出现「口径声称按当时区域,实际按当前区域」的假版本化。