首页/数据/数据工程与 ETL 速查/行数比对与波动检查

行数比对与波动检查

行数比对是最基础的稽核:源与目标同口径计数比对、当日与近 7 日基线比对;差异超阈值即告警,是发现抽取断流、过滤条件误改的快速手段。

行数比对为什么最常用

行数比对是最基础的稽核手段:源与目标在同一时间窗、同一过滤条件下计数比对,当日与近 7 日基线比对波动率。它实现简单、成本极低,却是发现抽取断流、过滤条件误改、分区写空最快的办法——很多事故排查的第一反应就是「先看行数对不对」。

基本信息

源目标比对同一时间窗、同一过滤条件下的计数
基线比对与近 7 日均值比较波动率
阈值设计绝对值加比例双阈值
定位方式差异按业务维度下钻

典型使用场景

  • 日切快速体检:先比行数,再查明细
  • 抽取断流发现:源端新增但目标没变,差值直接暴露
  • 过滤条件误改:改动上线后行数骤降,第一时间被抓住
  • 补数验证:补数后确认行数回到基线区间
  • 容量观察:行数趋势用于存储与成本规划

源与目标行数比对

源与目标行数比对
SELECT 'src' AS side, COUNT(1) AS cnt
FROM src_order WHERE update_time >= '2026-10-11 00:00:00'
UNION ALL
SELECT 'dwd', COUNT(1)
FROM dwd_trade_order_detail_di WHERE dt = '2026-10-11';

波动率计算

波动率计算
SELECT dt, cnt,
       ROUND((cnt - avg_cnt) / NULLIF(avg_cnt, 0), 4) AS diff_rate
FROM (
  SELECT dt, cnt,
         AVG(cnt) OVER (ORDER BY dt ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS avg_cnt
  FROM (SELECT dt, COUNT(1) AS cnt FROM dwd_trade_order_detail_di GROUP BY dt) t
) x
WHERE dt = '2026-10-11';

比对方式与适用

方式适用场景局限
源与目标计数抽取链路验证源端软删策略不同时会误报
与近 7 日基线比日增量波动监控大促与补数期需要临时调阈值
按维度下钻定位缺失范围维度多时查询成本上升
双阈值小表大表通用绝对值阈值需按表规模调整
行数正常不代表数据正常:大促、批量补录会让行数正常波动,阈值要结合业务日历调整,否则要么天天误报要么形同虚设。
源与目标的过滤条件必须严格一致(时间字段、软删标记、业务范围),否则比对结果没有意义,还会让人误以为链路出了问题。

阈值怎么定才不吵

阈值不能靠拍脑袋:先用历史数据跑一段时间,统计正常波动区间,再取略宽于该区间的值作为阈值。绝对值阈值解决小表问题(例如 10 万行的表少 5000 行就该报),比例阈值解决大表问题(例如千万级表波动 1% 才值得关注),两者同时成立才告警能显著减少噪音。业务日历也要纳入:大促、月末结算、批量补录当天的波动是预期的,应提前挂维护窗口或临时放宽阈值。

易错点

  • 阈值固定不变,大促期间每天误报,最终没人再看告警
  • 源与目标过滤条件不一致,比对结果没有意义
  • 只比总行数不按维度下钻,知道少了却不知道少了哪一块
  • 把行数比对当成唯一稽核手段,数据内容错了但行数正常的情况完全漏掉

数据来源与参考

  • 行业数据质量稽核实践与波动监控
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌