| 锁定列 | 自然键 + is_current=1 |
|---|---|
| 更新列 | end_date 与当前标志 |
| 顺序 | 先关闭后插入 |
关闭旧版本
关闭旧版本
UPDATE dim_customer
SET end_date = :batch_dt, is_current = 0
WHERE customer_id IN (SELECT customer_id FROM changed_keys)
AND is_current = 1;在 Hive/Spark 等以分区重写为代价的引擎上,大规模 UPDATE 要评估改成「重写受影响分区」方案。