数据仓库之质量管理
数据仓库,通过etl工具将多源数据进行集成,内部实现对业务数据的清洗、加工、模型、算法等,以实时或离线的方式对外提供数据服务,为部门或企业的决策提供有效支持。而数据质量是数据分析结论有效性和准确性的基础,也是一切的前提。
而数据质量也是考验一个数仓稳定性、是否成功的基础。而保障数据质量所面临的挑战也十分的巨大,数仓的数据链路长,对接的服务多,交叉的复杂性等决定数据质量是一个综合性问题,它的成功是由多方面因素决定的。
本文参考个人工作、网络博客、《阿里大数据之路》,思考对于如何保障数据仓库下的数据质量的一些思考,如有不足之处欢迎沟通。
数据质量原则
数仓以数据集成,面向企业提供数据查询(OLAP)的方式存在,目前可分为实时和离线两种应用场景。当前实时模块并未发展起来,以离线场景作为主要考虑点。结合数仓本身的特点,给出数据质量的几个原则
-
完整性
记录完整性:数据清洗、处理、加工处理过程中,数据没有缺失、遗漏等
信息完整性:库、表、字段信息完整未丢失,如表、字段的注释,表与表之间存在的关系信息等
-
准确性
包括记录的信息和数据是否准确,是否包含异常数据或错误的信息
-
一致性
数据在不同的层级或链路中流转,最后提供查询接口或服务等。那么,数据在整个过程中是否保持一致,如字段名称、类型、释义等
-
及时性
数据都有一定的时效性,不同的业务指标或数据服务时效不同,要保障特定时间下能够及时地提供数据
数据质量保障
数据质量发生的原因
在实际工作中,大致可分为三类,具体如下
数据质量-原因总结.png
如何保障数据质量
数仓一般在离线环境下,存储着海量的数据。与线上的OLTP相比,并没有一套成熟的测试体系来保障数据在复杂流程中的质量问题。有效的数据是一项非常重要的资产,而缺乏质量的数据则像一堆无用又浪费资源的磁盘。
-
加强数据校验
在etl开发过程中,在数据清理、加工、整合等环节中应增加数据的校验。如:
-
数据量的校验 数仓层级之间的数据流转,rowCount是否发生改变
-
异常值的校验 对于开发完成后的表,应检查是否存在异常值。如金额有负值,是否有空值,性别字段等
-
业务逻辑验证 比较源数据结果与目标的数据结果,是否不一致
-
脚本/代码测试 开发的代码是否存在明显问题,如中文字符等。在测试环境中是否可以正常运行
-
-
自动化服务
一套成熟的开发平台,将调度、质量、元数据、etl开发、模型开发进行整合,是最好的选择。
-
提升数据产品化认知
数仓将来自于业务系统的多源数据通过集成方式进行整合并对外提供数据查询,在数仓基础之上构建的各种数据服务平台都是数仓数据的消费者,如报表平台、分析平台、推荐平台、接口平台等。数仓是以提供数据而存在的产品
-
质量文化
I. 数据生产者对自己的数据质量和元数据负责
II. 为消费者提供必要的数据使用信息
III. 数据有生命周期,应考虑不同阶段的数据演进过程
数据质量衡量
-
数据消费者层面
提供及时、有效的准确数据,当数据链路中存在问题时能够快速的通知到数据消费者,并能够快速定位上游数据问题及排查恢复时间点
-
数据开发层面
I. 数仓夜里值班的起夜率
II. 数仓内部流程与规范的一致性
参考
-
《大数据之路-阿里巴巴大数据实践》