空跑为什么要保护
增量源为空或水位倒退时,如果照常执行合并逻辑,会产生两类事故:整表被判定为变更(属性比较全部命中差异),或者本批把有效成员的生效区间全部关闭。加载前先做空源与水位检查,异常时短路并告警,能避免这类不可逆的错误。
基本信息
| 空源检查 | 增量行数为零则跳过合并并记录 |
|---|---|
| 水位检查 | 消费水位倒退则阻断并告警 |
| 变更量检查 | 变更量超过历史均值数倍时告警复核 |
| 短路动作 | 跳过合并但不报错,保留审计记录 |
| 配置方式 | 阈值按表配置,写进调度平台的检查节点 |
典型使用场景
- 每日增量加载:源端尚未产出时避免误判为全部失效
- 节假日低峰:业务量为零属正常,保护规则避免误告警
- 上游故障:源表被清空时阻断加载,防止维表被误清
- 补数场景:水位回退时要求人工确认后再执行
- 灰度上线:新逻辑先小范围验证,配合变更量保护
加载前的两道检查
加载前的两道检查
# 加载前的空源与波动检查
chg_cnt = count(1) from changed_keys
if chg_cnt == 0:
跳过合并,写审计日志 # 空源不产生任何版本变更
elif chg_cnt > 昨日变更量 * 5:
阻断并告警,人工确认后重跑 # 变更量异常放大
else:
执行合并逻辑检查项与动作
| 检查项 | 触发条件 | 处置动作 |
|---|---|---|
| 空源 | 增量行数为 0 | 跳过合并并记录 |
| 水位倒退 | 本次水位早于上次 | 阻断并告警 |
| 变更量激增 | 超过历史均值数倍 | 人工确认后重跑 |
| 关键字段为空 | 主键或分组键缺失 | 阻断加载 |
保护规则要区分「正常为零」与「异常为空」:节假日业务量为零属正常现象,一律阻断会造成误报,建议对关键源做连续多批判定。
短路不等于静默:跳过的批次仍要写入审计日志并通知值班,否则下游会以为当天数据已更新,继续消费旧数据。