首页/数据/数据工程与 ETL 速查/缓慢变化维 Type 1:直接覆盖
本包目录(311 条)

缓慢变化维 Type 1:直接覆盖

Type 1 用最新值覆盖旧值,不保留历史;实现简单、维度表不膨胀,但历史指标失去当时口径,适合纠错类变更或本身无分析价值的属性。

做法UPDATE 或 MERGE 覆盖属性
历史不保留
成本较低,维度表不增长
适合错别字修正、无历史分析价值的字段

覆盖更新

覆盖更新
MERGE INTO dim_user t
USING stg_user s
ON t.user_id = s.user_id
WHEN MATCHED AND t.user_name <> s.user_name THEN
  UPDATE SET t.user_name = s.user_name
WHEN NOT MATCHED THEN
  INSERT (user_sk, user_id, user_name, city, level)
  VALUES (s.user_sk, s.user_id, s.user_name, s.city, s.level);
覆盖后无法回答去年这位用户是什么等级,涉及等级、组织、价格带等分析属性时需谨慎。

易错点

  • 把会员等级这类分析属性做成 Type 1,历史报表口径被无声改写
  • MERGE 条件缺少业务键去重,同一实体会出现多行

数据来源与参考

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