拉链表(Zipper Table) 是数据仓库中一种非常经典且重要的数据存储模式,主要用于处理缓慢变化维度(SCD, Slowly Changing Dimensions) 的数据。 简单来说,它既能记录数据的历史状态,又能避免像“每日全量快照”那样浪费巨大的存储空间。 以下从概念、场景、设计、维护四个方面详细讲解。 --- 1. 什么是拉链表? 核心概念 拉链表通过记录每条数据的生命周期(开始时间 和 结束时间 )来追踪历史变化。 生效时间(startdate):该记录状态开始生效的时间。 失效时间(enddate):该记录状态失效的时间。 形象比喻 想象一条拉链,闭合时代表一段连续的时间区间。当我们查询某个时间点的数据时,只需要看在这个时间点上,哪条记录的“拉链”是闭合的(即该时间点落在 和 之间)。 适用场景 1. 数据量大:表中有几千万甚至上亿行数据。 2. 部分字段发生变化:虽然数据量大,但每天发生变化的比例不大(例如用户信息表,每天只有1%的用户修改资料)。 3. 需要查看历史:业务方需要查询过去任意时间点的数据状态(例如:查看某用户在去年“双11”当天的会员等级)。...