前言
Slowly Changing Dimension 简称SCD是数据仓库建模和处理过程中一个很重要的概念,因为数据仓库系统的主要功能是对历史数据进行汇总和分析,所以保存历史记录的变化是很重要的。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。这种随时间发生变化的维度我们一般称之为缓慢变化维。
SCD 三种常用类型
类型1(Type 1):覆盖旧数值。
根据主键ID来追踪数据是否发生变化,发生变化直接将旧数据覆盖重写
优点:节省空间,操作简单
缺点:没有保留历史数据,无法分析历史变化信息
类型2(Type 2):增加新数值。
就类似拉链表,一般增加以下字段。
star_data(开始时间)
end_data(结束时间)
status(状态、是否当前记录值)
Date Changed (记录改变的时间戳)
优点:支持追寻历史快照数据,较节省空间
类型3(Type 3):增加新字段。
添加历史列。不会追踪所有的历史记录,只会追踪上一次的历史信息
优点:只追踪上一次的历史信息,介于类型1和2之间
缺点:如果维护字段较多就比较麻烦
总结
- 类型1适合不需要维护历史数据,直接覆盖
- 类型2使用比较多、常见,除了类型1基本上都是优先考虑类型2
- 类型3适合不会追踪所有的历史记录,只会追踪上一次的历史信息