数据质量六维度

数据质量通常按六个维度衡量:完整性(该有的有没有)、唯一性(是否重复)、一致性(跨表跨系统是否对得上)、及时性(是否按时产出)、准确性(是否与事实相符)、有效性(是否符合格式与取值约束)。

数据质量六维度是什么

数据质量通常按六个维度衡量:完整性关注该有的数据有没有(字段缺失、分区缺失);唯一性关注主键是否重复;一致性关注跨表与跨系统能否对上;及时性关注是否按时产出;准确性关注数值是否与事实相符;有效性关注取值是否符合格式与取值范围约束。

为什么不必六个全做

六个维度全铺、规则写到几百条,结果是没人看结果,等于没做。可行的做法是先按数据用途排序:对外报表优先及时性与准确性,明细层优先完整性与唯一性,然后把校验挂在产出任务之后,失败即阻断下游并告警。

基本信息

完整性该有的有没有:空值率、分区存在性、行数环比
唯一性主键是否重复
一致性跨表跨系统是否对得上(对账、关联核对)
及时性是否在承诺时间前产出
准确性数值是否正确(与源系统或抽样核对)
有效性取值是否符合枚举、范围与格式约束

六维度

维度回答的问题典型校验
完整性字段缺失或分区缺失?空值率、分区存在性、行数波动阈值
唯一性主键是否重复?主键分组计数大于 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;
校验要挂在任务链路里并默认阻断下游:只出报告的校验很快会被忽略。同时给校验留白名单机制,节假日等已知波动场景不应反复误报。
只做行数校验会漏掉字段级错值:金额单位从元变成分、日期格式整体偏移这类问题行数完全正常,必须补上量纲与取值的有效性校验。

易错点

  • 只做行数校验,字段级错值(金额单位错、时间偏移)长期漏检,等业务发现时已积累数月脏数据
  • 六个维度全铺、规则几百条却无人看结果,等于没做,还会拖慢链路
  • 校验结果只出报告不阻断下游,错误数据继续向下游扩散
  • 没有白名单与阈值调优,节假日波动导致告警疲劳,真问题反而被淹没

数据来源与参考

  • DAMA-DMBOK 数据管理知识体系(数据质量维度)
  • 行业数据质量治理实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌