稽核结果表设计
稽核结果表统一存储每次校验的结果,是质量看板、告警与复盘共同的数据基础。字段设计要能支持按时间与对象下钻:规则标识、目标表、分区、检查维度(完整性、唯一性、一致性、及时性、准确性、有效性)、样本量、失败量、是否通过、耗时与失败明细。两个容易忽略的点:失败量要能区分“校验通过”与“未执行”,否则统计口径混乱;明细字段要留少量失败样例(如键值),事后才能复现问题。
基本信息
| 关键字段 | 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 | 是否通过 | true | false 需按级别处置 |
| exec_status | 执行状态 | SUCCESS | FAILED 属平台故障,不算数据问题 |
| cost_ms | 稽核耗时 | 相对稳定 | 突涨说明数据量或规则复杂度变化 |
detail 字段存少量失败样例(如前 20 条键值)比只存计数更能加速定位,也便于事后复现问题。
失败行数为 0 既可能表示校验通过,也可能表示规则压根没执行;用 exec_status 或独立的执行记录把两种状态分开,统计才可信。
结果表本身也要有生命周期:长期保留全量明细会持续增长,建议明细样例短周期保留、聚合统计长期保留。