历史回刷是什么
拉链历史回刷指在维表还没有历史版本、或跟踪属性口径发生变更之后,用变更流水或每日快照重新演算出历史版本行。首次入仓时源系统往往只给当前值,历史只能靠变更流水或历史归档重放;口径调整后也必须整段重算,否则新旧版本的判定标准不一致。回刷过程要求幂等、可断点续跑,并在快照或临时表上完成后整体切换。
基本信息
| 触发场景 | 首次建历史、跟踪口径变更、历史数据修正 |
|---|---|
| 输入 | 变更流水、每日快照、归档备份 |
| 硬性要求 | 幂等可重跑,支持断点续跑 |
| 交付方式 | 临时表重算 + 原子切换,避免边刷边用 |
| 验收 | 区间无重叠、无断档,当前行唯一 |
典型使用场景
- 首次上拉链:源系统只有当前值,用两三年变更流水反推版本行
- 口径变更:跟踪属性从三项扩到五项,历史必须按新口径重算
- 历史修正:源端补录了往期变更,回刷对应自然键的版本区间
- 故障恢复:某次调度失败导致版本断档,按批次位点续跑补齐
- 租户上线:新客户带历史数据入仓,一次性回放生成完整拉链
- 演练与压测:在影子表上跑全量回刷,验证耗时与资源占用
回刷步骤
回刷步骤
1) 回刷前对目标表与关键分区做快照备份
2) 冻结或标注当前维表状态,避免与在线批次互相覆盖
3) 按自然键分批重放变更流水,每批记录进度位点
4) 落临时表 dim_user_rb,跑区间重叠与断档校验
5) 校验通过后原子切换(rename 或分区替换)
6) 重跑事实与维度的关联校验,确认未知键占比回到基线回刷方式对照
| 方式 | 适用条件 | 代价 |
|---|---|---|
| 变更流水重放 | 源端保留逐次变更记录 | 依赖流水完整性,缺一段就缺版本 |
| 每日快照比对 | 有按日全量快照 | 只能精确到天,日内多次变更被合并 |
| 归档备份还原 | 有历史备份且可解析 | 解析成本高,备份缺失年份无法补 |
| 只刷最近区间 | 历史已可信,仅近期有问题 | 最省资源,但要确认断档边界干净 |
| 整表重建 | 历史短或口径大改 | 耗时最长,期间需停用或切影子表 |
回刷期间对应维表通常不可查或结果不可信,必须安排在调度窗口内,或全程在影子表上完成再切换;切换前确认依赖它的下游任务已暂停,避免下游读到半成品。