数据质量体系
概述
数仓的价值建立在数据可信之上。数据质量体系围绕完整性、准确性、一致性、及时性四个维度建设:先定义口径,再配置监控规则,出现异常走稽核与修复流程。本文给出可落地的质量框架、规则示例与对账方法。
一、质量四维
| 维度 | 定义 | 示例问题 |
|---|---|---|
| 完整性 | 该有的数据不缺 | 订单表缺某小时分区 |
| 准确性 | 数据值正确 | 金额字段错位、乱码 |
| 一致性 | 多源/多层口径一致 | ODS 与源库行数不一致 |
| 及时性 | 数据按时就绪 | 日报比约定时间晚 2 小时 |
二、监控规则体系
2.1 规则分层
| 层级 | 监控对象 | 规则示例 |
|---|---|---|
| 表级 | 分区/行数 | 分区存在、行数阈值 |
| 字段级 | 单列质量 | 非空率、枚举值占比、格式 |
| 指标级 | 业务指标 | GMV 波动 ±20% 告警 |
| 跨层 | 上下游对账 | ODS 行数 = 源表行数 |
2.2 常用规则模板
| 规则类型 | 说明 | 示例 |
|---|---|---|
| 空值率 | 关键字段不允许为空 | user_id 空值率 = 0 |
| 唯一性 | 主键不重复 | order_id 唯一 |
| 枚举校验 | 字段取值合法 | status ∈ 待支付/已支付/已取消 |
| 范围校验 | 数值在合理区间 | 金额 > 0 且 < 10 万 |
| 格式校验 | 字段格式正确 | 手机号 11 位、日期格式 |
| 波动监控 | 指标环比波动 | GMV 环比偏差 > 30% 告警 |
| 时效监控 | 就绪时间 | 每天 8 点前分区就绪 |
| 血缘对账 | 上下游行数一致 | DWD 总量 = 各 ODS 之和 |
2.3 规则配置示例(以 DolphinScheduler/自研平台为例)
表 ods_order 分区 dt=20260816
规则:
1. 分区存在性:分区在 06:00 前生成
2. 行数阈值:行数 >= 100000(环比波动 < 20%)
3. 主键唯一:order_id 无重复
4. 枚举校验:status 枚举值占比合法
5. 空值率:amount 空值率 < 0.1%规则引擎按批次执行,异常写入质量报告并触发告警(钉钉/邮件/企微)。
三、数据稽核与对账
3.1 三层对账
| 对账层级 | 内容 | 方法 |
|---|---|---|
| 源库 ↔ ODS | 同步是否完整 | 行数、金额 SUM 对比 |
| ODS ↔ DWD | 清洗是否失真 | 清洗前后行数、关键字段 |
| DWD ↔ ADS | 汇总口径是否正确 | 抽样 SQL 复核指标 |
3.2 对账 SQL 示例
sql
-- 行数对账:ODS 与源库
SELECT COUNT(*) AS ods_cnt FROM ods_order WHERE dt='20260816';
SELECT COUNT(*) AS src_cnt FROM source_order WHERE update_time >= '2026-08-16';
-- 金额对账:DWS 与 DWD
SELECT SUM(amount) AS dws_sum FROM dws_gmv WHERE dt='20260816';
SELECT SUM(amount) AS dwd_sum FROM dwd_order WHERE dt='20260816' AND status='已支付';对账差异超过阈值(如 0.1%)即判定异常,进入稽核流程。
3.3 稽核闭环
监控发现异常 → 生成质量事件 → 定位根因(源系统/ETL/口径)
→ 修复数据 → 复核对账通过 → 更新质量报告 → 沉淀规则四、常见问题与修复机制
4.1 数据问题类型
| 类型 | 场景 | 修复手段 |
|---|---|---|
| 缺失分区 | 上游任务失败 | 补数重跑,依赖链上自动重试 |
| 重复数据 | ODS 重复同步 | 去重键重建,任务幂等化 |
| 口径错误 | 指标定义歧义 | 统一口径字典,修正 SQL |
| 数据延迟 | 源系统晚到 | 调整调度时间/告警阈值 |
| 脏数据 | 上游格式异常 | 清洗规则加强 + 源端治理 |
4.2 修复流程
1. 冻结:暂停下游任务消费问题数据
2. 定位:按血缘找到问题层
3. 修复:重跑该层及其下游(分区级)
4. 对账:修复后行数与金额一致
5. 复盘:补充监控规则,防止复发4.3 质量看板指标
| 指标 | 定义 |
|---|---|
| 数据准确率 | 对账通过任务 / 总任务 |
| 数据完整率 | 按时就绪分区 / 应就绪分区 |
| 及时率 | 按时完成调度 / 总调度 |
| 异常任务数 | 当日质量告警任务数 |
| MTTR | 质量问题平均修复时长 |
五、质量保障最佳实践
| 实践 | 说明 |
|---|---|
| 规则前置 | 每个新表上线先配置质量规则,不放行裸奔 |
| 阈值分级 | 核心指标严监控(±10%),普通表宽松(±30%) |
| 告警分级 | 阻断级(停下游)与提醒级(仅通知)区分 |
| 自动对账 | 跨层对账任务纳入调度链,异常即阻断 |
| 数据版本 | 修复重跑保留版本记录,便于追溯 |
| 质量文化 | 质量问题登记入册,按周复盘 |
六、与各层配合
| 层 | 质量重点 |
|---|---|
| ODS | 同步完整性、去重、分区就绪 |
| DWD | 清洗正确性、维度一致性、Join 不丢不重 |
| DWS | 指标口径唯一、汇总正确 |
| ADS | 输出准确性、时效达标、口径固化 |
质量监控不是额外负担,而是嵌入每层调度依赖:上游质量不通过,下游不启动,把问题挡在入口。