首页/数据/数仓建模速查/拉链维度:起止日期设计
维度与事实设计149 条

拉链维度:起止日期设计

用 start_date / end_date 描述每个版本的生效区间;建议闭开区间 [start, end),当前行 end 取远期极大值而非 NULL。

数仓建模速查数据更新于 2026-10-12
区间约定闭开 [start, end)
当前行end=9999-12-31
约束同自然键版本区间不重叠

按业务日期取版本

按业务日期取版本
SELECT * FROM dim_user d
WHERE :dt >= d.start_date AND :dt < d.end_date;
闭开区间能避免相邻版本在边界日期重叠,是拉链实现的关键约定。

易错点

  • 用 NULL 表示当前行,区间判断无法走索引
  • 边界日期处理成闭区间,同一天命中两条版本

数据来源与参考

  • 数据仓库工具箱
  • 拉链表实现实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌