稽核结果表设计

稽核结果表统一存储每次校验结果:规则、对象、分区、检查维度、样本量、失败量、是否通过、耗时与明细;它是看板、告警与复盘的数据基础,字段设计要支持按时间与对象下钻。

稽核结果表设计

稽核结果表统一存储每次校验的结果,是质量看板、告警与复盘共同的数据基础。字段设计要能支持按时间与对象下钻:规则标识、目标表、分区、检查维度(完整性、唯一性、一致性、及时性、准确性、有效性)、样本量、失败量、是否通过、耗时与失败明细。两个容易忽略的点:失败量要能区分“校验通过”与“未执行”,否则统计口径混乱;明细字段要留少量失败样例(如键值),事后才能复现问题。

基本信息

关键字段rule_id、table_name、dt、check_dim、total_cnt、fail_cnt、pass_flag
补充字段check_time、cost_ms、detail、exec_status
分区按 dt 分区,便于历史对比与趋势分析
保留周期建议覆盖一个季度以上,便于趋势与归因
下游消费质量看板、告警系统、复盘材料

典型使用场景

  • 质量看板:按表与维度统计通过率与趋势
  • 告警触发:按规则命中情况发送分级通知
  • 复盘取证:回看当天所有失败规则及失败样例
  • 规则治理:统计长期未执行或长期未命中的规则
  • 交付验收:把某次回刷后的稽核记录留档备查

稽核结果表

稽核结果表
CREATE TABLE dq_audit_result (
  rule_id    STRING,
  table_name STRING,
  check_dim  STRING COMMENT '完整性/唯一性/一致性/及时性/准确性/有效性',
  total_cnt  BIGINT,
  fail_cnt   BIGINT,
  pass_flag  BOOLEAN,
  exec_status STRING COMMENT 'SUCCESS/FAILED/SKIPPED,区分未通过与未执行',
  cost_ms    BIGINT,
  detail     STRING COMMENT '失败样例或差异说明,前 20 条键值',
  check_time TIMESTAMP
) PARTITIONED BY (dt STRING)
STORED AS ORC;

结果表字段读法

字段含义正常值异常含义
total_cnt校验涉及的样本量与分区行数量级一致为 0 说明分区缺失或未扫描到数据
fail_cnt违规行数0大于 0 表示未通过
pass_flag是否通过truefalse 需按级别处置
exec_status执行状态SUCCESSFAILED 属平台故障,不算数据问题
cost_ms稽核耗时相对稳定突涨说明数据量或规则复杂度变化
detail 字段存少量失败样例(如前 20 条键值)比只存计数更能加速定位,也便于事后复现问题。
失败行数为 0 既可能表示校验通过,也可能表示规则压根没执行;用 exec_status 或独立的执行记录把两种状态分开,统计才可信。
结果表本身也要有生命周期:长期保留全量明细会持续增长,建议明细样例短周期保留、聚合统计长期保留。

易错点

  • 结果表不存失败样例,事后无法复现问题,只能重新跑一次校验
  • 失败行数不区分通过与未执行,平台故障被统计成数据质量问题,指标失真
  • 按 dt 分区但未清理历史数据,结果表持续膨胀并拖慢看板查询
  • detail 字段直接存整行数据甚至明文敏感字段,带来二次泄漏风险

数据来源与参考

  • 行业数据质量平台实践(稽核结果模型)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌