首页/数据/数仓建模速查/SCD2 合并模板:源到维度增量
维度与事实设计149 条

SCD2 合并模板:源到维度增量

可复用的三步骤模板:变更识别 → 关闭旧版本 → 插入新版本;用 hashdiff 比对新旧属性,配合批次水位实现按批增量。

数仓建模速查数据更新于 2026-10-12
步骤识别变更 / 关旧 / 插新
水位last_load_ts 过滤增量源
幂等按批次记录版本来源

步骤 1:标出变更的自然键

步骤 1:标出变更的自然键
WITH src AS (
  SELECT customer_id, name, phone,
         md5(concat_ws('|', name, phone)) AS row_hash
  FROM stg_customer WHERE load_ts > :last_load_ts),
chg AS (
  SELECT s.customer_id FROM src s
  JOIN dim_customer d ON s.customer_id = d.customer_id AND d.is_current = 1
  WHERE s.row_hash <> d.row_hash)
SELECT customer_id FROM chg;
同批统一取批次日期作为 start_date,避免同一批生成多个小版本。

易错点

  • 逐列比较时漏列,属性改了却不产生新版本
  • 同批先插入后关闭,版本区间出现重叠或断裂

数据来源与参考

  • 数据仓库工具箱:缓慢变化维增量加载
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌