2. 数据质量维度
聊数据质量,绕不开这六个维度。完整性、准确性、一致性、时效性、唯一性、有效性。听起来像教科书对吧?我刚开始带数据治理项目时也觉得这是纸上谈兵。直到有一次线上事故,让我彻底改观了。
那次事故很简单——某个报表的订单金额对不上。排查了两天,最后发现是上游系统某个字段允许为空,导致下游聚合时丢了30%的数据。嗯,这就是完整性问题。从那以后,我要求每个项目启动前,先把这六个维度过一遍。
2.1 完整性:数据有没有缺胳膊少腿?
完整性,说白了就是数据该有的东西有没有。字段值不能为空,记录不能丢失,关联关系不能断裂。
我在项目中遇到过最典型的场景:用户画像系统。某个用户的手机号字段为空,推荐算法直接把他当新用户处理,推送了一堆完全不相关的内容。用户投诉率飙升。
- 必填字段是否有NULL值?
- 主键是否唯一且非空?
- 外键关联是否存在孤儿记录?
- 时间序列数据是否有断点?
2.2 准确性:数据是不是对的?
完整性保证数据存在,准确性保证数据正确。这两个维度经常被混淆,但本质不同。
举个例子:用户年龄字段填了"150"。完整性检查通过——字段非空。但准确性呢?明显不对。我曾经接手过一个客户数据迁移项目,源系统把出生年份和注册年份搞反了,导致全量数据年龄分布完全失真。修复花了整整两周。
| 维度 | 检查内容 | 常见问题 |
|---|---|---|
| 完整性 | 字段是否有值 | NULL、空字符串、缺失记录 |
| 准确性 | 值是否真实 | 超出范围、格式错误、逻辑矛盾 |
2.3 一致性:不同系统说的是一回事吗?
一致性,你想想看——同一个客户,CRM系统叫"张三",订单系统叫"张先生",财务系统叫"Zhang San"。这三个系统数据都对,但合在一起就乱了。
我参与过一家零售企业的数据中台建设。他们的商品编码在采购、库存、销售三个系统里用了三种不同的编码规则。每次做全链路分析,光做映射就要花三天。后来我们统一了编码规范,分析效率提升了60%。
一致性通常体现在三个层面:
- 格式一致:日期格式、货币单位、编码规则统一
- 逻辑一致:同一业务实体在不同系统中的属性值不矛盾
- 时间一致:数据变更的时间戳对齐,避免时序错乱
2.4 时效性:数据是不是过时了?
时效性,说白了就是数据从产生到可用,花了多长时间。不同业务对时效性的要求天差地别。
实时风控系统,延迟超过100毫秒就可能漏掉一笔欺诈交易。而月度经营分析报表,T+1的延迟完全可接受。我建议在数据产品设计阶段就明确时效性SLA,不要等上线了再补。
- 实时:秒级以内,用于风控、推荐
- 准实时:分钟级,用于监控、预警
- 批量:小时/天级,用于报表、分析
- 离线:周/月级,用于趋势、建模
2.5 唯一性:数据有没有重复?
唯一性,就是同一实体在数据集中只出现一次。听起来简单,做起来难。
我记得有个电商客户,他们的用户表里同一个手机号出现了三次。原因是三个不同的注册渠道各自生成了用户ID,但没有做去重。结果营销活动给同一个用户发了三张优惠券,用户觉得是系统bug,投诉了。
唯一性检查的核心:
- 主键是否唯一?
- 业务自然键(如身份证号、手机号)是否有重复?
- 多源合并时是否做了去重?
2.6 有效性:数据是否符合业务规则?
有效性,是数据质量维度里最容易被忽略的一个。它检查数据是否满足业务定义的规则和约束。
举个例子:订单状态字段,业务规则规定只能是"待支付、已支付、已发货、已完成、已取消"这五种。如果出现一个"已退款",那就是无效数据。我在项目中遇到过,某个系统升级后,状态枚举值变了,但下游消费方没同步更新,导致整个订单处理链路报错。
有效性检查通常包括:
- 枚举值校验:字段值是否在允许的取值范围内
- 格式校验:邮箱、手机号、身份证号是否符合规范
- 业务规则校验:如"发货时间不能早于下单时间"
- 依赖关系校验:如"有退款金额的订单必须处于已退款状态"
知识体系总览
下面这张图把这六个维度的关系梳理清楚了。我建议你保存下来,做数据治理方案时对照着看。
六个维度的优先级怎么排?
你可能会问:六个维度都重要,但资源有限,先做哪个?我的经验是,分场景看。
| 业务场景 | 优先级最高的维度 | 原因 |
|---|---|---|
| 实时风控 | 时效性、准确性 | 延迟和误判直接导致损失 |
| 客户画像 | 完整性、唯一性 | 缺失和重复导致画像失真 |
| 财务对账 | 准确性、一致性 | 一分钱都不能差 |
| 监管报送 | 有效性、完整性 | 不合规会被罚款 |