首页/数据/数据工程与 ETL 速查/拉链表设计与使用
本包目录(311 条)

拉链表设计与使用

拉链表是 SCD Type 2 的常见落地形态:一行等于实体某段状态区间,用 start_date 与 end_date 表示有效范围,end_date 为极限日期表示当前有效;按天增量维护、只存变化。

结构业务键 + 属性 + start_date + end_date
当前有效end_date = 极限日期(如 9999-12-31)
体积只存变化,通常小于每日全量快照
使用按日期区间条件取当天有效行

取某一天的有效状态

取某一天的有效状态
SELECT user_id, city, level
FROM dim_user_zip
WHERE '2026-10-11' >= start_date AND '2026-10-11' < end_date;
区间用左闭右开 [start_date, end_date) 更不容易出错:相邻版本首尾相接,不会出现同一天命中两行。

易错点

  • 查询条件写成 end_date >= 当日,导致同一天命中两个版本、行数翻倍
  • 首次初始化忘记给所有行设置极限 end_date,后续关链找不到目标

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》拉链表
  • 行业数仓缓慢变化维实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌