首页/数据/数据工程与 ETL 速查/缓慢变化维 Type 3:保留前值列
本包目录(311 条)

缓慢变化维 Type 3:保留前值列

Type 3 在维度表增加上一版本列(如 current_level 与 previous_level),只保留有限的变更历史;结构简单、查询不用处理区间,但可记录的版本数固定。

做法增加前值与切换日期列
历史深度固定列数,常见只保留上一版
查询无需时间区间条件
适合只做前后对比的简单场景

前后值列

前后值列
ALTER TABLE dim_user ADD COLUMNS (prev_level STRING, level_changed_date STRING);

-- 更新:把旧值挪到前值列
UPDATE dim_user
SET prev_level = level, level = 'gold', level_changed_date = '2026-10-11'
WHERE user_id = 10086 AND level <> 'gold';
需要更多历史版本时 Type 3 只能不断加列,方向不对;那时应改用 Type 2。

易错点

  • 用 Type 3 承载多版本历史,列数不断增加难以维护
  • 前值与当前值更新不同步,出现前后值相同的中间态

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》SCD Type 3
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌