数仓缓慢渐变维(SCD)
缓慢渐变维(Slowly Changing Dimension SCD)是数据仓库中用于处理高纬度属性随时间缓慢变化的技术。其核心挑战在于平衡实时数据与历史记录的维护需求,以确保分析的准确性。以下是常见的SCD处理方式及特点:
SCD Type1(覆盖型)
- 处理方式:直接覆盖旧数据,不保留历史记录。例如:客户地址变更后,原纪录被新值覆盖。
- 优点:实现简单,存储成本低。
- 缺点:无法追溯历史变化,可能影响长期趋势分析。
- 适用场景:修正错误数据或无需历史跟踪的字段(如姓名拼写错误)。
SCD Type2(拉链表型)
- 处理方式:为每次变化新增一条记录,通过有效时间区间(如effective_start和effective_end)或标志位(如active)区分当前与历史状态。例如,客户地址变更后,原纪录标记为失效,新增一条当前有效记录。
- 优点:完整记录所有历史版本,支持精确的时间点分析。
- 缺点:数据冗余大,存储成本高。
- 实现技术:常用拉链表(通过时间区间标记版本),适用于频繁变化且须长期追踪的场景。
SCD Type3(有限历史型)
- 处理方式:在维度表中新增列保存有限的历史值(如current_value和previous_value)。例如,记录客户当前地址和上一次地址。
- 优点:减少冗余,适合存储空间有限的情况。
- 缺点:仅能保留有限的历史版本(通常最近一次变更),扩展性差。
- 适用场景:仅需追踪少量历史变化的属性
SCD Type4(历史表分离型)
- 处理方式:将当前数据与历史数据分离存储。主表保存当前状态,历史表记录所有变更,通过代理键关联。、
- 优点:主表轻量化,历史查询独立。
- 缺点:统计时需关联多表,复杂度较高。