数据质量是数据治理的核心。
我们常说"垃圾进,垃圾出"。如果数据质量不好,再厉害的分析、再精准的算法,结果都是错的。但在实际工作中,数据质量问题无处不在:缺失值、重复值、异常值、格式错误、逻辑矛盾……
本文详细讲解数据质量的配置方法,从基础的质量维度、规则配置,到高级的质量监控、告警、根因分析,结合实际案例,帮你搭建一套完整的数据质量体系。
一、什么是数据质量
先说说什么是数据质量。
1. 数据质量的定义
数据质量,简单说就是数据满足需求的程度。
数据质量好,意味着数据:
- 准确:数据反映真实情况
- 完整:没有缺失
- 一致:不同来源的数据不矛盾
- 及时:数据是最新的
- 唯一:没有重复
- 有效:数据格式和范围正确
数据质量差,意味着数据有各种问题,用这样的数据做决策,会导致错误的结论。
2. 为什么数据质量重要
数据质量的重要性体现在:
- 决策支持:管理层基于数据做决策,数据错了,决策就错了
- 业务运营:业务系统依赖数据,数据错了,业务就出问题
- 数据分析:分析的基础是数据,数据质量差,分析结果不可信
- 机器学习:模型训练依赖数据,垃圾数据训练出垃圾模型
- 合规要求:很多行业有数据合规的要求,数据质量不达标会被处罚
3. 数据质量问题的来源
数据质量问题的来源很多:
- 数据源问题:源系统本身的数据就有问题
- 采集问题:数据采集过程中出错,如字段映射错误
- 传输问题:数据传输过程中丢失或损坏
- 存储问题:存储格式不兼容,导致数据变形
- 处理问题:ETL过程中逻辑错误,导致数据异常
- 人为问题:人工录入错误,或误操作删除数据
二、数据质量的六大维度
数据质量可以从六个维度来衡量。
1. 完整性(Completeness)
完整性,是指数据是否完整,有没有缺失。
- 字段缺失:某个字段的值为空
- 记录缺失:应该有的记录没有
- 范围缺失:某个时间段的数据缺失
常见问题:
- 用户表中,手机号字段为空
- 订单表中,某天的订单数据缺失
- 商品表中,价格字段为空
配置方法:
- 非空检查:关键字段不允许为空
- 行数检查:每天的数据量在合理范围内
- 时间连续性检查:日期字段连续,没有断点
2. 准确性(Accuracy)
准确性,是指数据是否准确,是否反映真实情况。
- 数值错误:金额、数量等数值不对
- 分类错误:类别、状态等分类不对
- 逻辑错误:数据之间的逻辑关系不对
常见问题:
- 订单金额是负数
- 用户年龄是200岁
- 订单状态是"已发货"但没有物流信息
配置方法:
- 范围检查:数值在合理范围内(如年龄0-120)
- 枚举检查:字段值在预定义的枚举值内
- 逻辑检查:字段之间的逻辑关系正确(如发货时间 > 下单时间)
3. 一致性(Consistency)
一致性,是指同一数据在不同地方是否一致。
- 跨表一致:同一指标在不同表中一致
- 跨系统一致:同一数据在不同系统中一致
- 跨时间一致:数据在时间维度上一致
常见问题:
- 用户表中的用户数和订单表中的用户数对不上
- 财务系统的收入和业务系统的收入不一致
- 昨天的累计值和今天的期初值对不上
配置方法:
- 跨表比对:同一指标在不同表中比对
- 余额检查:期初 + 本期 = 期末
- 趋势检查:数据的变化趋势在合理范围内
4. 及时性(Timeliness)
及时性,是指数据是否及时更新。
- 数据延迟:数据没有按时产出
- 更新频率:数据更新频率不满足需求
- 数据时效:数据已经过时了
常见问题:
- 每天的报表,下午才出,影响晨会
- 实时数据延迟了几个小时
- 用户信息更新了,但报表还是旧的
配置方法:
- 产出时间检查:数据在规定时间前产出
- 延迟监控:数据延迟不超过阈值
- 更新频率检查:数据更新频率满足需求
5. 唯一性(Uniqueness)
唯一性,是指数据是否唯一,有没有重复。
- 主键重复:主键字段有重复值
- 记录重复:完全相同的记录出现多次
- 业务唯一:业务上应该唯一的字段有重复
常见问题:
- 用户表中,同一个用户ID出现多次
- 订单表中,同一个订单号出现多次
- 同一个用户用不同手机号注册了多个账号
配置方法:
- 主键唯一检查:主键字段没有重复
- 记录去重检查:没有完全重复的记录
- 业务唯一检查:业务关键字段没有重复
6. 有效性(Validity)
有效性,是指数据格式和类型是否正确。
- 格式错误:日期、手机号、邮箱等格式不对
- 类型错误:字段类型不对,如数字字段存了字符串
- 编码错误:编码不统一,导致乱码
常见问题:
- 手机号是10位或12位
- 邮箱格式不对
- 日期格式不统一,有的是YYYY-MM-DD,有的是MM/DD/YYYY
配置方法:
- 正则检查:字段符合正则表达式(如手机号、邮箱)
- 格式检查:日期、时间等格式统一
- 类型检查:字段类型正确
三、数据质量规则的配置
说说数据质量规则怎么配置。
1. 规则的基本结构
一条数据质量规则,通常包含以下要素:
- 规则名称:规则的名字,要清晰描述规则
- 规则类型:属于哪个质量维度
- 检查对象:哪张表、哪个字段
- 检查逻辑:具体的检查逻辑(SQL表达式或规则模板)
- 阈值:允许的误差范围
- 严重级别:高、中、低
- 告警方式:邮件、短信、钉钉等
- 负责人:谁负责处理这个规则的问题
2. 规则配置的方式
常见的规则配置方式有三种:
方式一:SQL规则
直接写SQL来检查数据质量。
-- 检查用户表中手机号为空的数量
SELECT COUNT(*) FROM users WHERE phone IS NULL OR phone = '';
-- 检查订单金额为负数的数量
SELECT COUNT(*) FROM orders WHERE amount < 0;
-- 检查用户ID重复的数量
SELECT user_id, COUNT(*) FROM users GROUP BY user_id HAVING COUNT(*) > 1;优点:灵活,能实现复杂的检查逻辑。 缺点:需要写SQL,维护成本高。
方式二:规则模板
用预定义的规则模板,填写参数即可。
常见的模板:
- 非空检查:表名 + 字段名
- 范围检查:表名 + 字段名 + 最小值 + 最大值
- 枚举检查:表名 + 字段名 + 枚举值列表
- 正则检查:表名 + 字段名 + 正则表达式
- 唯一检查:表名 + 字段名
- 行数检查:表名 + 最小行数 + 最大行数
优点:简单易用,不需要写SQL。 缺点:灵活性有限,复杂逻辑实现不了。
方式三:可视化配置
通过可视化界面,拖拽配置规则。
这是最友好的方式,但需要数据质量平台的支持。
3. 规则的阈值设置
阈值的设置很重要,太严会误报,太松会漏报。
设置阈值的方法:
- 历史数据法:根据历史数据的波动范围设置
- 业务规则法:根据业务需求设置(如金额不能为负)
- 统计方法法:用3σ原则,超过3倍标准差就算异常
- 渐进式:先松后严,逐步收紧
建议:
- 刚开始阈值可以松一点,先跑起来
- 运行一段时间后,根据实际情况调整
- 不同严重级别的规则,阈值可以不同
四、数据质量监控和告警
规则配置好了,还要有监控和告警。
1. 监控的方式
- 定时监控:每天定时跑质量检查规则
- 实时监控:数据流入时实时检查
- 触发式监控:数据更新后触发检查
建议:
- 核心数据:实时监控或准实时监控
- 非核心数据:定时监控(每天或每小时)
2. 告警的方式
- 邮件:适合非紧急的问题
- 短信/电话:适合紧急的问题
- 钉钉/企业微信:适合日常的问题通知
- 仪表盘:可视化展示质量状况
3. 告警的分级
告警要分级,避免告警疲劳。
- P0(紧急):核心数据严重错误,影响业务,立即处理
- P1(高):重要数据有问题,当天处理
- P2(中):一般数据问题,本周处理
- P3(低):轻微问题,定期处理
4. 告警的收敛
告警太多,人就麻木了。要做告警收敛:
- 合并:同一类问题合并成一条告警
- 抑制:已知问题在处理中,不再重复告警
- 升级:问题长时间未处理,升级告警
- 静默:维护期间静默告警
五、数据质量问题的处理流程
发现数据质量问题后,要有处理流程。
1. 问题发现
通过质量监控规则,自动发现问题。
也可以通过业务反馈、分析发现等方式发现问题。
2. 问题确认
发现问题后,先确认问题:
- 是真的有问题,还是规则误报?
- 问题的影响范围有多大?
- 问题的严重程度如何?
3. 问题分派
确认问题后,分派给对应的负责人:
- 数据源问题:分给源系统负责人
- ETL问题:分给数据开发
- 业务问题:分给业务方
- 规则问题:分给数据质量负责人
4. 问题修复
负责人修复问题:
- 修复错误的数据
- 修复导致问题的代码或流程
- 补充缺失的数据
5. 问题验证
修复后,验证问题是否解决:
- 重新跑质量规则,确认通过
- 检查相关数据,确认没有其他问题
- 确认业务方满意
6. 问题复盘
严重的问题,要做复盘:
- 问题的根本原因是什么?
- 为什么没有提前发现?
- 以后怎么避免类似问题?
- 需要增加什么规则或监控?
六、高级话题
说说数据质量的一些高级话题。
1. 数据质量评分
给数据质量打分,量化数据质量状况。
评分方法:
- 每个规则有一个权重
- 规则通过得满分,不通过得0分或部分分
- 加权平均,得到整体质量分
质量分可以:
- 按表打分:每张表的质量分
- 按域打分:每个数据域的质量分
- 按时间趋势:质量分的变化趋势
2. 数据血缘和根因分析
数据质量问题,往往是上游导致的。通过数据血缘,可以追溯问题的根源。
- 数据血缘:记录数据从哪里来,经过了哪些处理
- 根因分析:从问题数据出发,沿着血缘往上找,找到问题的源头
有了数据血缘,定位问题的效率会大大提升。
3. 数据质量和数据目录结合
把数据质量和数据目录结合,让用户在找数据的时候,就能看到数据的质量状况。
- 每张表都有质量分
- 每个字段都有质量标签
- 用户可以选择高质量的数据使用
4. 自动化数据质量
理想的数据质量,是自动化的:
- 自动发现数据源,自动推荐质量规则
- 自动配置监控和告警
- 自动发现问题,自动分派
- 自动修复简单的问题
- 自动生成质量报告
这需要AI和数据质量平台的支持。
七、实际案例
分享一个实际的数据质量配置案例。
案例:电商订单表的数据质量配置
订单表是电商的核心表,数据质量要求很高。
我们配置了以下规则:
完整性规则:
- 订单ID不为空(P0)
- 用户ID不为空(P0)
- 订单金额不为空(P0)
- 下单时间不为空(P0)
- 每天订单量在1万-10万之间(P1)
准确性规则:
- 订单金额 > 0(P0)
- 订单状态在枚举值内(待支付、已支付、已发货、已完成、已取消)(P0)
- 支付金额 = 订单金额 - 优惠金额(P1)
- 发货时间 > 下单时间(P1)
唯一性规则:
- 订单ID唯一(P0)
一致性规则:
- 订单表的用户ID都在用户表中存在(P1)
- 订单表的商品ID都在商品表中存在(P1)
- 每天的订单金额和财务系统的收入一致(P1)
及时性规则:
- 订单数据延迟不超过5分钟(P0)
- 每日订单报表在早上8点前产出(P1)
有效性规则:
- 手机号格式正确(P2)
- 收货地址不为空且长度合理(P2)
这些规则配置好后,自动监控,发现问题自动告警。运行了一段时间后,订单表的数据质量明显提升。
八、常见的坑
说说数据质量配置中常见的坑。
1. 规则太多,告警泛滥
刚开始做数据质量,容易配置很多规则,结果告警太多,大家都麻木了。
建议:
- 先配置核心规则,跑起来
- 逐步增加规则
- 做好告警分级和收敛
- 定期清理无用的规则
2. 规则太严,误报太多
规则太严,会有很多误报,大家就不相信告警了。
建议:
- 阈值设置要合理,参考历史数据
- 先松后严,逐步收紧
- 误报多的规则,及时调整
3. 只配置不处理
配置了很多规则,但发现问题没人处理,时间长了就形同虚设。
建议:
- 每个规则都要有负责人
- 建立问题处理流程和SLA
- 定期复盘问题处理情况
- 把数据质量纳入考核
4. 只关注技术,不关注业务
数据质量最终是为业务服务的。如果只关注技术指标,不关注业务影响,就会偏离方向。
建议:
- 和业务方一起定义质量规则
- 优先配置影响业务的规则
- 用业务语言描述质量问题
- 定期向业务方汇报质量状况
九、写在最后
数据质量,是数据工作的基础。没有好的数据质量,一切都是空中楼阁。
搭建数据质量体系,不是一蹴而就的。需要从基础的规则配置开始,逐步建立监控、告警、处理、复盘的完整流程。
2022年了,数据越来越重要,数据质量也越来越受到重视。希望这篇文章,能帮你搭建一套适合自己的数据质量体系。
最后,用一句话总结:"数据质量不是一次性的项目,而是持续的过程。配置规则、监控告警、处理问题、持续优化,一步一步来,数据质量会越来越好。"
愿你的数据,准确、完整、一致、及时。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录