销售人员业务键变更后如何保留历史并支持当前口径分析?
结论
保留事实表中交易发生时对应的销售人员归属,并单独维护“历史销售人员到当前销售人员”的映射,通常适合这个场景。这样既能按交易发生时的销售人员分析历史交易,也能按当前组织结构汇总。
Slowly Changing Dimension (Type 2) 适用于能够识别并记录属性变化的情况。如果来源系统没有保留历史归属,Type 2 无法自行还原这些信息。要维护完整的历史版本,需要通过其他可信记录重建历史,或从现在开始持续捕获变化。
建模建议
保留交易时的销售人员键
事实表应引用交易发生时识别到的销售人员维度记录,例如使用 salesperson_sk 作为外键,并保留来源业务键 salesperson_bk 以便追踪。若 2023 年的交易分别对应业务键 1234、5678,这些事实记录应继续指向当时对应的销售人员记录,不要为了匹配当前结构而改写历史交易。
销售人员维度可以采用 Type 2,记录已知的属性或组织归属变化。载入事实时,应根据交易日期和可获得的历史版本确定对应的维度键。如果来源系统没有历史分配记录,就不能仅凭当前维度状态推断过去的归属。
另建当前结构映射
建立独立映射表,将历史销售人员标识映射到当前组织中的实体。可以根据报告口径和生效时间维护映射,例如:
| 历史销售人员业务键 | 当前销售人员业务键 | 生效日期 | 失效日期 |
|---|---|---|---|
| 1234 | 7654 | 2024-01-01 | 空 |
| 5678 | 7654 | 2024-01-01 | 空 |
| 7654 | 7654 | 2024-01-01 | 空 |
表中的日期仅用于说明字段用途,实际生效日期应依据组织变更记录确定。如果组织关系可能多次变更,可以增加映射版本或报告口径字段,避免把不同时间的“当前结构”混为一个口径。
按历史口径汇总时,直接使用事实表的 salesperson_sk。按当前口径汇总时,再通过映射表将历史销售人员归并到当前实体。如果一个历史销售人员可能对应多个当前实体,例如组织拆分,映射中需要定义相应的分配规则。若业务要求按比例拆分,还应在映射表中包含权重,并明确金额分摊的计算方式。
不要用保单或客户维度的当前值替代交易归属
保单和客户记录更新为当前销售人员后,维度中保存的就是当前状态。用这个值回查旧交易,会把当前归属误认为交易发生时的归属。如果业务需要按当前保单负责人分析历史交易,应将其作为单独的分析口径并说明含义,避免与交易发生时的销售人员归属混淆。
Type 2、桥接表与雪花模式的取舍
- Type 2 维度:适合从现在开始捕获销售人员属性或组织归属的变化,也适合通过可靠记录补齐历史的情况。它无法自动恢复来源系统未保留的历史。
- 映射表或桥接表:适合表达历史实体与当前实体之间的对应关系,尤其是合并、拆分或多对多关系。简单的一对一或多对一映射通常用普通映射表就够了;需要表达多对多关系或分配权重时,再采用桥接表结构。
- 雪花模式:用于规范化维度和组织属性,不会自动补齐缺失的历史归属。仅因为需要通过映射推导当前负责人,并不一定要将维度雪花化;可以在分析层通过映射表或视图完成关联。
落地时需要确认
- 明确“历史销售人员”指交易发生时的归属,还是组织系统中当时的正式归属。两者有时并不相同。
- 核实
1234、5678和7654之间的映射及生效日期,优先参考组织变更记录、审计日志或其他可靠来源。无法验证时,应将历史归并标注为规则推导,而不是已核实的历史事实。 - 对无法确定的记录保留未知或未映射状态,并在报表中说明覆盖范围,避免将其静默归入当前销售人员。
- 在载入事实时记录当时使用的维度键及必要的来源标识,确保后续维护当前结构映射时,不会改变交易原有的分析口径。
这样可以保留原始交易事实,并按明确维护的映射口径汇总到当前销售人员结构。历史映射的准确性取决于能否从其他来源获得可信的组织变更信息。
备注:内容仅供参考。
