目标
管线应在任意窗口可安全重放,以便从失败或逻辑缺陷中恢复。本工作流为每条记录定义跨运行稳定一致的键,用 merge/upsert 按键写入使重跑收敛到同一状态,限定重放窗口只覆盖受影响分区,并验证重跑后行数与校验和不变。
步骤要点
- 为记录定义跨运行稳定的确定性键。
- 用 merge/upsert 按键写入。
- 限定重放只覆盖受影响窗口。
- 验证重跑后行数与校验和不变。
MERGE INTO events AS t
USING staging_events AS s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET ...
WHEN NOT MATCHED THEN INSERT ...;
验证
按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。
排错提示
- 仅追加写入会在重放时产生重复。
- 过宽的重放窗口会波及无关数据。
- 忽略删除会留下陈旧行。
适用边界
- 需要支持 merge 的数仓。
- 删除需用墓碑传播。