← 中文资源

简体中文版本

源库到数仓的对账审计工作流

定期在源系统与数仓之间核对行数、金额合计与校验和,按差距大小与新旧分级处置错配。

阅读英文原文

目标

用户信任仪表盘直到某一天被证明错了。持续对账行数、金额合计与校验和,把这份信任从传说变成算术;错配台账则成为管道的记忆——每个分歧都有原因分类与处置决定,重复出现的因果模式会自己浮出水面变成工程优先级。

步骤要点

  1. 选对账键:每个领域挑两三个真正要紧的不变量——按日行数、金额合计、实体去重数或敏感表的逐键校验和。
  2. 固定调度且感知延迟:在管道完成后跑,比对有界窗口(昨天)而非开放式当下,避免在途行误报。
  3. 精确量化错配:每个失败不变量算出确切差值——缺行、多行还是值不同,附窗口与样本键。
  4. 按大小与新旧路由:金额或实体级错配进领域负责人的紧急队列,容差级漂移进周度数据质量评审。
  5. 逐条归因关闭:追到原因类别(管道 bug、迟到数据、源端变更、时区边界),修复或接受并记录处置。

排错提示

对账天天红灯但报表没错多半在拿当下对当下,改成有界窗口并算上复制延迟;错配只有红灯没有数字说明只做了布尔比较,量化到行与金额才能路由;同一原因类别反复出现是台账没发挥作用,按原因类聚合历史错配并排优先级。

适用边界

逐键校验和对大表代价高,全量校验宜低频、抽样校验宜高频地组合;对账只能发现数字层分歧,语义层错误(值对但含义错)需业务规则校验补充。

代码示例

-- daily reconciliation (window: yesterday, aligned TZ)
SELECT
  s.order_date,
  s.row_count   AS source_rows,
  w.row_count   AS wh_rows,
  s.total_cents AS source_total,
  w.total_cents AS wh_total
FROM source_daily s
FULL JOIN wh_daily w USING (order_date)
WHERE s.row_count IS DISTINCT FROM w.row_count
   OR s.total_cents IS DISTINCT FROM w.total_cents;

-- order_date | src_rows | wh_rows | src_total | wh_total
-- 2026-10-19 |     41207 |    41206 |  8904231 |   8904207  <- 1 row, $0.24
-- disposition: late-arriving row, accepted + backfilled