目录
1.什么是数据质量,我们遇到了什么问题
2.数据质量的问题和根源
2.1业务源系统变更
2.2 数据开发任务变更
2.3 物理资源不足或者基础设施不稳定
3.如何提高数据质量
3.1 添加稽核校验任务
3.2 建立全链路监控
3.3 智能预警,确保任务按时产出
3.4 规范化管理制度
4.如何衡量数据质量
1.什么是数据质量,我们遇到了什么问题
报表数据出错,无人发现
数据出现问题,导致推荐等使用数据不准确
发现数据问题,但是数据问题源头排查耗时长,导致数据长时间不可用
2.数据质量的问题和根源 2.1业务源系统变更
数据同步或清洗时业务源表结构变化,导致失败
同步或清洗时业务源表源表数据业务变化,比如枚举类型修改等,导致数据不准确
加服务器或者迁移服务器,但是忘了迁移日志传输任务
数据格式异常,埋点有不符合格式的数据,约定的 IP 格式是 166.111.4.129,结果出现了 166.111.4.null等
2.2 数据开发任务变更
任务上线未测试,导致任务失败
依赖关系配置错误
没有对错误的数据格式清洗,导致的异常等开发原因
2.3 物理资源不足或者基础设施不稳定
资源不够导致任务延时,或者任务多次由于资源不足重试后直接失败
基础设施不稳定,集群挂了等原因,不过这种基本不会出现
3.如何提高数据质量
核心;早发现,早恢复
3.1 添加稽核校验任务
在数据产出任务运行结束后,启动稽核校验任务对数据结果进行扫描计算
完整性规则。主要目的是确保数据记录是完整的,不丢失。常见的稽核规则有表数据量的绝对值监控和波动率的监控(比如表波动超过 20%,就认为是异常)。还有主键唯一性的监控,它是判断数据是否有重复记录的监控规则,比较基础。除了表级别的监控,还有字段级别的监控(比如字段为 0、为 NULL 的记录)。一致性规则。主要解决相关数据在不同模型中一致性的问题。商品购买率是通过商品购买用户数除以商品访问 uv 计算而来的,如果在不同的模型中,商品购买用户数是 1W、商品访问 uv10W,商品购买率 20%,那这三个指标就存在不一致。准确性规则。主要解决数据记录正确性的问题。常见的稽核规则有,一个商品只能归属在一个类目,数据格式是不是正确的 IP 格式,订单的下单日期是还没有发生的日期等等。根据提前设定的强弱规则,触发不同的处理流程。如果是强规则,就立即终止任务加工链路,后续的任务不会执行,并且立即发出电话报警,甚至我们要求,关键任务还要开启循环电话报警,直到故障被认领;如果是弱规则,任务会继续执行。但是存在风险,这些风险会通过邮件或者短信的方式,通知到数据开发,由人来进一步判断风险严重程度。
3.2 建立全链路监控
基于数据血缘关系,建立全链路数据质量监控,可以直观的看到上下游每一个任务的执行情况,快速定位问题源头以及造成的影响
3.3 智能预警,确保任务按时产出
失败告警,以及部分任务在某一个时间点未完成进行告警,快速发现并解决问题
3.4 规范化管理制度
制定通用规则,像必须加监控等
还有一些重要的表评审加上特殊规则,比如字段非null,非0,主键检查等
对任务进行等级划分,优先重要任务
4.如何衡量数据质量
这个比较不好衡量,不过我们可以尽量效果可量化
比如告警发现了多少问题,解决了多少问题,问题定位耗时,本周期数据问题同比增加还是减少