首页/数据/数仓建模速查/SCD 类型 2:新增版本行
维度与事实设计149 条

SCD 类型 2:新增版本行

每次属性变更插入新行并维护起止日期与当前标志,是保留历史的主流方案;依赖代理键、版本区间与幂等合并逻辑。

数仓建模速查数据更新于 2026-10-12
行数每个版本一行
关键列start_date/end_date/is_current
合并按自然键+hashdiff 比较

两步合并

两步合并
-- 1) 关闭旧版本
UPDATE dim_user SET end_date='2026-10-12', is_current=0
WHERE user_id=:id AND is_current=1 AND hashdiff<>:new_hash;
-- 2) 插入新版本
INSERT INTO dim_user(user_id,name,start_date,end_date,is_current,hashdiff)
VALUES(:id,:name,'2026-10-12','9999-12-31',1,:new_hash);
版本行要与事实加载顺序对齐,避免事实关联到尚未生效的版本。

易错点

  • 只关旧版本不插新版本,出现版本断档
  • 起止日期闭区间使用不当,相邻版本区间重叠

数据来源与参考

  • 维度建模工具箱:缓慢变化维
  • 数据仓库工具箱
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌