数据仓库中缓慢变化维度(SCD)的管理与实现
在数据仓库的构建和管理过程中,处理维度数据的变化是一个关键问题。本文将详细介绍如何管理缓慢变化维度(Slowly Changing Dimensions,SCD),包括不同类型SCD的特点、技术解决方案以及如何检测源维度数据的变化。
1. 保留历史信息的维度管理
在数据仓库中,并非所有维度属性都适合采用相同的处理方式。以客户维度为例,当客户的信用评级发生变化时,不能简单地替换记录中的现有信用评级。因为在查看数据立方体中的交易时,所有旧交易都应与交易发生时有效的信用评级相关联,而不是新的信用评级。这种需要保留历史值的维度被称为Type 2 SCD。
1.1 数据模型
最初加载客户维度时,每个业务键(如客户编号)对应一条记录。例如,表8 - 2展示了原始的客户维度记录:
| 客户编号 | 客户姓名 | 信用评级 | 代理键 |
| ---- | ---- | ---- | ---- |
| 1000 | Emily Channing | High | 1 |
| 1121 | Roberto Berneman | Low | 2 |
| 1212 | Deborah Shaffet | Medium | 3 |
如果Emily Channing的信用评级从High变为Medium,需要插入一条新记录,该记录具有相同的业务键(1000)但新生成的代理键(如表8 - 3所示):
| 客户编号 | 客户姓名 | 信用评级 | 代理键 |
| ---- | ---- | ---- | ---- |
| 1000 | Emil