数据质量六维度是什么
数据质量通常按六个维度衡量:完整性关注该有的数据有没有(字段缺失、分区缺失);唯一性关注主键是否重复;一致性关注跨表与跨系统能否对上;及时性关注是否按时产出;准确性关注数值是否与事实相符;有效性关注取值是否符合格式与取值范围约束。
为什么不必六个全做
六个维度全铺、规则写到几百条,结果是没人看结果,等于没做。可行的做法是先按数据用途排序:对外报表优先及时性与准确性,明细层优先完整性与唯一性,然后把校验挂在产出任务之后,失败即阻断下游并告警。
基本信息
| 完整性 | 该有的有没有:空值率、分区存在性、行数环比 |
|---|---|
| 唯一性 | 主键是否重复 |
| 一致性 | 跨表跨系统是否对得上(对账、关联核对) |
| 及时性 | 是否在承诺时间前产出 |
| 准确性 | 数值是否正确(与源系统或抽样核对) |
| 有效性 | 取值是否符合枚举、范围与格式约束 |
六维度
| 维度 | 回答的问题 | 典型校验 |
|---|---|---|
| 完整性 | 字段缺失或分区缺失? | 空值率、分区存在性、行数波动阈值 |
| 唯一性 | 主键是否重复? | 主键分组计数大于 1 即为异常 |
| 一致性 | 多表多系统是否对得上? | 汇总勾稽、关联核对、对账任务 |
| 及时性 | 是否按时产出? | 产出时间与 SLA 比对 |
| 准确性 | 数值是否正确? | 与源系统核对、抽样比对、量纲检查 |
| 有效性 | 取值是否合法? | 枚举白名单、范围检查、格式校验 |
典型使用场景
- 上游数据突降:行数环比校验发现条数异常,阻断下游任务继续加工
- 报表数字被质疑:用勾稽校验(明细合计等于汇总)定位哪一层出错
- 新数据源接入:先做完整性与有效性校验,再接入正式链路
- 对外接口交付:以及时性与准确性为硬指标,超时或校验失败即告警
- 历史数据修复:修复后用唯一性与一致性校验确认问题已消除
六维度在一条链路上的落点
六维度在一条链路上的落点
ODS 落地:完整性(行数、分区存在性)
DWD 清洗:唯一性(主键去重)、有效性(枚举标准化)
DWS 聚合:准确性(明细与汇总勾稽)、一致性(跨主题核对)
ADS 交付:及时性(SLA 达成率)、准确性(与业务口径核对)可直接运行的校验 SQL
可直接运行的校验 SQL
-- 完整性 + 及时性:当天分区是否存在、行数是否在合理区间
SELECT COUNT(*) AS cnt FROM dwd_order WHERE dt = '2026-10-11';
-- 唯一性:主键是否有重复(返回非空即为异常)
SELECT order_id, COUNT(*) AS c FROM dwd_order WHERE dt = '2026-10-11'
GROUP BY order_id HAVING COUNT(*) > 1;
-- 准确性:明细合计应与上游原始表一致,差异超过阈值即告警
SELECT (SELECT SUM(amount) FROM dwd_order WHERE dt='2026-10-11')
- (SELECT SUM(total_amount) FROM ods_order WHERE dt='2026-10-11') AS diff;校验要挂在任务链路里并默认阻断下游:只出报告的校验很快会被忽略。同时给校验留白名单机制,节假日等已知波动场景不应反复误报。
只做行数校验会漏掉字段级错值:金额单位从元变成分、日期格式整体偏移这类问题行数完全正常,必须补上量纲与取值的有效性校验。