数据质量六大维度:从理论到实战

聊数据质量,绕不开这六个维度。我入行那会儿,前辈丢给我一张表,上面就列着这六个词——完整性、准确性、一致性、及时性、唯一性、有效性。当时觉得不就是六个概念嘛,背下来就行。直到第一次上线数据管道,凌晨三点被电话叫醒,才发现每个维度背后都是真金白银的教训。

这六个维度,说白了就是衡量数据「好不好用」的六把尺子。咱们一个一个拆开看。

2.1 完整性:数据有没有缺胳膊少腿?

完整性检查的是数据有没有缺失。字段为空、记录丢失、文件不完整,都算。

举个例子,用户注册表里「手机号」字段允许为空,那营销活动就发不出短信。我遇到过最离谱的一次,某业务表的主键字段居然有 30% 是 NULL——嗯,建表时没设 NOT NULL,代码里也没做校验。

核心检查方式:
  • 必填字段非空校验
  • 记录数波动监控(比如日活突然少了一半)
  • 文件行数与预期对比
我的习惯:在数据接入层就做完整性断言。不要等到数据进了数仓才发现缺字段,那时候溯源成本高得吓人。

2.2 准确性:数据是不是对的?

完整性只问「有没有」,准确性问的是「对不对」。用户年龄填 200 岁,订单金额是负数,这些数据虽然完整,但明显不对。

我记得有一次做电商数据治理,发现某条订单的支付金额比商品总价多了两个零。查了半天,是前端传参时单位搞混了——分和元没对齐。这种问题,光靠数据库约束抓不住,得靠业务规则。

场景 常见问题 校验方式
年龄字段 超过 120 岁 范围校验 0-120
订单金额 负数或超过阈值 业务规则 + 统计分布
时间戳 未来时间或 1970 年 时间范围约束
避坑指南:我曾经在准确性校验上只做了单字段规则,结果漏掉了跨字段逻辑错误。比如「下单时间」晚于「发货时间」,这种组合校验才是真正的准确性保障。

2.3 一致性:不同地方的数据打架吗?

一致性关注的是数据在不同系统、不同表、不同时间点之间是否矛盾。同一个用户,CRM 里叫「张三」,订单系统里叫「张先生」,这就叫不一致。

你想想看,数据仓库从三个源系统拉数据,如果每个系统对「订单状态」的定义都不一样——A 系统用 0/1,B 系统用「已支付/未支付」,C 系统用英文——那聚合出来的报表谁敢信?

我个人的做法是:在数据接入层统一做映射和标准化。不一致的问题,越早发现越容易修。

2.4 及时性:数据来得够快吗?

及时性衡量的是数据从产生到可用之间的延迟。实时报表要求秒级,离线分析可以容忍小时级,但不管哪种场景,超时的数据就是废数据。

我记得有一次做风控系统,规则要求交易数据必须在 5 秒内入湖。结果某天管道卡住了,延迟到了 30 秒——那 25 秒的窗口里,好几笔欺诈交易就这么溜过去了。

及时性监控要点:
  • 定义 SLA:数据必须在什么时间点前到达
  • 监控延迟:实际到达时间 vs 预期时间
  • 设置告警:延迟超过阈值自动通知

2.5 唯一性:数据有没有重复?

唯一性要求数据实体在数据集里只出现一次。同一个用户注册了两次,同一条订单被导入两遍,这些都是唯一性问题。

为什么会这样?最常见的原因是缺乏主键约束,或者去重逻辑有 bug。我遇到过最夸张的情况:某张客户表里,同一个手机号出现了 17 次,每次的姓名还都不一样——你说这数据怎么用?

我的建议:在数据建模阶段就明确业务主键,并且在 ETL 过程中做幂等处理。同一个数据跑两遍,结果应该一样。

2.6 有效性:数据符合业务规则吗?

有效性检查的是数据是否满足预定义的格式、类型、取值范围。比如邮箱字段必须包含 @,手机号必须是 11 位数字,国家代码必须在 ISO 标准列表里。

有效性和准确性有点像,但侧重点不同。准确性关心「值对不对」,有效性关心「值合不合规」。举个例子:用户填了手机号「13800138000」,这个号码是准确的(真实存在),但如果业务规则要求手机号必须以 1 开头且是 11 位,那它就是有效的。

维度 检查内容 示例
完整性 字段是否为空 手机号不能为 NULL
准确性 值是否真实 手机号是真实存在的号码
一致性 跨系统是否统一 两个系统里手机号相同
及时性 数据是否按时到达 T+1 数据在次日 8 点前到
唯一性 是否有重复 手机号在表里只出现一次
有效性 是否符合格式 手机号是 11 位数字

六大维度的关系

这六个维度不是孤立的。我习惯把它们分成两层:

  • 基础层:完整性、唯一性、有效性——这三项是数据能用的前提
  • 质量层:准确性、一致性、及时性——这三项决定了数据好不好用

基础层没过,质量层根本不用谈。你想想看,数据都不完整,谈什么准确?

数据质量六大维度关系图 基础层:数据能用的前提 完整性 字段非空 · 记录完整 唯一性 主键约束 · 去重机制 有效性 格式合规 · 值域校验 质量层:数据好用的关键 准确性 业务规则 · 逻辑校验 一致性 跨系统统一 · 标准化 及时性 SLA 保障 · 延迟监控 基础层是质量层的基石,缺一不可

实战中的优先级

六个维度都重要,但资源有限的时候怎么排?我个人的经验是:

  1. 先保完整性——数据都没了,其他免谈
  2. 再抓唯一性——重复数据会污染所有下游
  3. 有效性紧随其后——格式不对的数据处理起来很痛苦
  4. 准确性、一致性、及时性——这三项需要业务深度参与,逐步迭代
注意:不要试图一次性搞定所有维度。我见过不少团队,一上来就搞全量校验,结果规则太多、误报率太高,最后没人看了。建议从最痛的点切入,逐步扩展。