首页/数据/数仓建模速查/维度加载的空跑保护
维度与事实设计149 条

维度加载的空跑保护

增量源为空或水位倒退时要短路:不产生任何版本变更,并告警提示;否则容易把整表判定为变更或误关版本。

数仓建模速查数据更新于 2026-10-13

空跑为什么要保护

增量源为空或水位倒退时,如果照常执行合并逻辑,会产生两类事故:整表被判定为变更(属性比较全部命中差异),或者本批把有效成员的生效区间全部关闭。加载前先做空源与水位检查,异常时短路并告警,能避免这类不可逆的错误。

基本信息

空源检查增量行数为零则跳过合并并记录
水位检查消费水位倒退则阻断并告警
变更量检查变更量超过历史均值数倍时告警复核
短路动作跳过合并但不报错,保留审计记录
配置方式阈值按表配置,写进调度平台的检查节点

典型使用场景

  • 每日增量加载:源端尚未产出时避免误判为全部失效
  • 节假日低峰:业务量为零属正常,保护规则避免误告警
  • 上游故障:源表被清空时阻断加载,防止维表被误清
  • 补数场景:水位回退时要求人工确认后再执行
  • 灰度上线:新逻辑先小范围验证,配合变更量保护

加载前的两道检查

加载前的两道检查
# 加载前的空源与波动检查
chg_cnt = count(1) from changed_keys

if chg_cnt == 0:
    跳过合并,写审计日志          # 空源不产生任何版本变更
elif chg_cnt > 昨日变更量 * 5:
    阻断并告警,人工确认后重跑     # 变更量异常放大
else:
    执行合并逻辑

检查项与动作

检查项触发条件处置动作
空源增量行数为 0跳过合并并记录
水位倒退本次水位早于上次阻断并告警
变更量激增超过历史均值数倍人工确认后重跑
关键字段为空主键或分组键缺失阻断加载
保护规则要区分「正常为零」与「异常为空」:节假日业务量为零属正常现象,一律阻断会造成误报,建议对关键源做连续多批判定。
短路不等于静默:跳过的批次仍要写入审计日志并通知值班,否则下游会以为当天数据已更新,继续消费旧数据。

易错点

  • 空源照常执行:出现全表伪变更,版本数量暴增
  • 水位回退未检测:重复消费旧数据,区间与版本冲突
  • 全表判定变更时无告警:脏数据静默写入,事后难以回滚
  • 保护规则一刀切阻断:正常的业务低峰被误判为异常
  • 短路后不通知下游:下游误以为已加载,继续使用旧数据

数据来源与参考

  • 数仓调度实践:数据量波动防护
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌