数据质量挑战:常见问题与根源分析
说实话,做了这么多年数据工程,我见过太多因为数据质量问题翻车的项目了。有的直接导致报表对不上,有的让机器学习模型跑偏,最惨的一次是某电商大促期间,因为重复数据导致库存系统崩溃——嗯,那场面,真是记忆犹新。
这一章咱们就来聊聊,数据质量到底会出哪些幺蛾子,以及这些问题的根儿在哪儿。
2.1 四大常见数据质量问题
我把日常工作中遇到的数据质量问题归纳为四类。你想想看,是不是基本都逃不出这个范围?
| 问题类型 | 典型表现 | 影响程度 |
|---|---|---|
| 缺失值 | 字段为空、NULL、占位符 | 高 |
| 重复数据 | 完全重复、部分重复、业务重复 | 高 |
| 异常值 | 超出范围、逻辑矛盾、离群点 | 中-高 |
| 格式不一致 | 日期格式、编码、单位不统一 | 中 |
2.1.1 缺失值——数据里的"黑洞"
缺失值是最常见的问题,没有之一。我个人习惯把缺失值分成三种:
- 完全随机缺失:比如用户填表单时手滑跳过了某个字段
- 随机缺失:跟其他字段有关,但跟自身无关。比如高收入人群更不愿意填收入字段
- 非随机缺失:跟自身值有关。比如收入特别高的人故意不填收入——这种最麻烦
避坑指南:我曾经接手过一个用户画像项目,发现年龄字段有30%的缺失。一开始以为是随机缺失,后来一查才发现——系统只在用户登录时采集年龄,而大部分用户都是"登录一次,用三年"。这属于典型的非随机缺失,直接填充均值会严重扭曲分布。
2.1.2 重复数据——看似一样,实则灾难
重复数据分三个层次:
- 完全重复:所有字段一模一样。通常是ETL过程重复抽取导致的
- 主键重复:ID相同,但其他字段有差异。比如同一个订单被更新了两次
- 业务重复:字段不完全相同,但指向同一实体。比如"张三"和"张先生"其实是同一个人
我记得有个客户做用户画像,用户表里"张三"出现了7次,每次手机号都不一样。最后分析出来的用户画像——嗯,一个人有7种消费习惯,你说这画像准不准?
2.1.3 异常值——数据里的"噪音"
异常值不一定是错误,但一定要警惕。我一般用三种方法识别:
- 统计法:3σ原则、IQR(四分位距)
- 业务法:比如年龄不能超过150岁,温度不能低于零度
- 模型法:孤立森林、LOF(局部异常因子)
我的经验:别一看到异常值就删。有一次我在处理传感器数据时,发现某个温度值突然飙到200度——按规则应该剔除。结果一查,是设备真的着火了。异常值有时候比正常值更有价值。
2.1.4 格式不一致——最容易被忽视的问题
格式不一致看着是小问题,但坑起来真要命。我见过最离谱的:
- 日期格式:2024-01-15、01/15/2024、2024年1月15日、15-JAN-2024——四种格式混在一个表里
- 编码问题:UTF-8、GBK、ISO-8859-1混用,中文直接变乱码
- 单位问题:有的用米,有的用厘米,有的用英尺
说白了,格式不一致就是数据治理的"面子工程"没做好。但面子工程做不好,里子迟早要出事。
2.2 数据质量问题的根源分析
问题找到了,咱们得挖挖根儿。我画了张图,把数据质量问题的根源梳理了一下:
2.2.1 数据源头问题
数据从哪儿来,问题就从哪儿来。我总结了三类:
- 人工录入:手误、理解偏差、故意造假。我见过一个销售为了冲业绩,一天录了200条假客户信息
- 系统采集:传感器漂移、API超时、日志截断。IoT项目里最常见
- 外部数据:第三方数据质量不可控,字段定义可能跟你的理解完全不同
2.2.2 采集流程问题
流程问题往往比源头问题更隐蔽。我踩过最大的坑就是数据漂移——明明数据源没问题,但ETL跑出来的结果就是不对。
注意:我曾经遇到一个案例,凌晨2点的批处理任务因为上游系统延迟,导致当天的数据被划到了前一天。这种"时间窗口错位"问题,如果不做数据血缘追踪,根本发现不了。
2.2.3 存储架构问题
存储层面的问题,说白了就是"地基没打好":
- Schema变更:上游改了字段类型,下游没同步更新
- 编码不一致:同一个数据库,有的表用UTF-8,有的用GBK
- 分区策略:分区键选错了,导致数据倾斜或者丢失
2.2.4 管理规范问题
这个其实是最要命的。技术问题都能修,管理问题修起来——嗯,你懂的。
我见过一个团队,数据字典写了300页,但没人看。为什么?因为字典是项目初期写的,项目上线后就没更新过。说白了,管理规范不是写出来就完事了,得有人维护、有人执行、有人监督。
我的建议:别一上来就搞什么"数据治理委员会"。先定三条最简单的规则:
- 所有新增字段必须经过评审
- 所有数据变更必须有回滚方案
- 所有数据质量问题必须在24小时内上报
这三条做到了,80%的问题都能提前拦住。
2.3 小结
数据质量问题,说白了就四个字:人、机、料、法。人(源头)、机(系统)、料(数据本身)、法(流程规范)。
你可能会问:这么多问题,从哪儿开始修?我的建议是——先抓源头和流程。因为这两个环节修好了,后面存储和管理的问题会少一大半。至于具体怎么修,咱们后面几章慢慢聊。