谈谈ETL中的数据质量
数据质量监控背景
当我们把数据导入数据仓库时,ETL中的每个步骤中都可能会遇到数据质量错误。比如与源系统的连接错误,抽取数据可能会失败。由于记录类型冲突,数据转换可能会失败。即使的ETL任务成功,提取的记录中也会出现异常值,导致后续过程报错。
那么如何主动捕获这些错误,并确保数据仓库中的数据质量?
接下来,我们来总结5条规则,在做ETL的过程中,使用这些规则来确保数据仓库中的数据质量。
数据质量监控方法
1、校验每天的记录数
分析师遇到的最常见数据异常是其报告的输出突然降至0。
我们通常会发现最后的罪魁祸首是当天没有将新记录添加到相应的表中。
一种简单的检查方法是确保每天一个表中的新记录数>0。
2、NULL和0值校验
分析师常遇到的第二个问题是NULL或0值。我们要保证每天增量数据中的NULL或0值不能超过新增数据的99%。要检查这一点,只需将一个循环脚本设置为每天用NULL或0计数一个表中的新记录数。如果看到记录数急剧增加,则可能存在转换错误或源业务系统就存在异常。
3、每天新增的记录数波动范围
某一天你发现数据量出现大幅增长或下降,而规则1和2都已校验通过。这种波动可能是正常的,比如电商行业某天的大促活动,或者社交软件的营销活动。但是也可能这就是异常的,是因为从源系统抽取了重复的记录。所以针对此种情况,我们也要制定数据质量规则,检查这些波动何时发生,并主动进行诊断。比如自动执行的一个简单的SQL过程,每天检查COUNT个新记录是否在7天跟踪平均值的误差范围内。阈值和误差范围可能因公司和产品而异,经验值一般是加减25%。当然,你可也可以直接和前一天的数据对比,增量不超过前一天的1倍。
4、重复记录数据校验
不管是电商系统或者是社交系统或者是物联网设备上报的数据,正常情况下都不会出现两条完全一样的记录(包括ID,时间,值都一样)。笔者曾遇到一个终端上报的两条数据完全一样的场景,导致我在做时间分段时候,划分不正确。所以,对数据值唯一性校验是有必要的。
5、数据时间校验
一般我们业务系统的数据都是带有时间戳的,这个时间戳肯定比当前的时间要小。但是由于采集数据设备异常(业务系统异常),我们会碰到“未来时间”的数据,那如果我们以时间作为分区,后期可能就会出现异常的分析结果。当然,如果你的公司业务是跨国的,你需要考虑时差因素。
总结
这些只是我们维护数据仓库时遇到的最常见的5个错误。可以将上述规则作一个checklist,做成任务每天例行检查。出现以上问题是对ETL任务进行告警,并人工干预。每周或者没有汇总质量报告,和团队小伙伴或者业务侧一起制定解决方案,不断完善监控体系,只有这样才能保证我们的业务分析结果是准确的,才能指导公司做出正确的决策。
当然,对于企业级数据质量监控系统,这些事远远不够的,不同公司面临的困难不一样,方法也不一样,可以参考业务的一些建议,制定自己的一套数据质量监控方案,这样才能更好的落地实施。