Part 01、 什么是数据质量管理
数据质量管理,是DAMA数据管理知识体系指南中数据治理领域非常重要的一部分(图1 所示),主要是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。
Part 02、 数据质量问题原因及评价标准
数据在计划、获取、存储、共享、维护等各个环节都有可能引发数据质量问题,主要原因分为几下几个方面:
数据不完整:由于企业信息系统的孤立使用,各个业务系统或模块按照各自的需要录入系统,没有统一的录入工具和数据出口,业务系统不需要的信息就不录,造成同样的数据有不同的信息属性,再或者取数动作不规范,或许某个数据本身就是采集过来的,本来就是不完整的,数据完整性无法得到保障。
数据不合规:没有统一的数据管理平台和数据源头,数据生命周期管理不完整,同时企业各信息系统的数据录入环节过于简单且手工参与较多,就数据本身而言,缺少是否重复、合法、对错等校验环节,导致各个信息系统的数据不够准确,格式混乱,各类数据难以集成和统一,没有质量控制导致海量数据因质量过低而难以被利用。
数据时效性差:大数据项目对数据的时效性要求是非常严格的,比如离线项目是每天计算前一天的数据,如果前一天的源数据因为某些原因没有被及时的传输过来,这样就会严重影响后面指标的计算以及报表的生成。
数据冗余:各个信息系统针对数据的标准规范不一、编码规则不一、校验标准不一、且部分业务系统针对数据的验证标准缺失,造成了企业顶层视角的数据出现“一物多码,一码多物”等现象。
数据不精确:数据的精确性也是指数据的准确性,是指数据是否与目标值匹配;比如一个订购金额,如果远远大于或低于常规的数值,那么我们就要怀疑这个的数据的精确性不够。
那么如何判断数据质量的优劣?从哪些方面可以评估数据质量?在实践中,我们可以通过数据质量评估维度进行评估。数据质量评估维度是数据质量的特征之一,它们为度量和管理数据的质量提供了一种途径和标准。在一个具体的数据质量项目中,要选择最适用于业务需求的数据质量维度进行测量,以评价数据的质量。
在《GB/T36344-信息技术数据质量评价指标》中,国家标准化管理委员会明确了数据质量评价指标框架如图2所示。
图2
- 规范性:数据符合数据标准、数据模型、业务规则、元数据或权威参考数据的程度。
- 完整性:按照数据规则要求,数据元素被赋予数值的程度。
- 准确性:数据准确表示其所描述的真实实体(实际对象)真实值的程度。
- 一致性:数据与其他特定上下文中使用的数据无矛盾的程度。
- 时效性:数据在时间变化中的正确程度。
- 可访问性:数据能被访问的程度。
Part 03、目前常用的数据质量管理工具
3.1 Apache Griffin
Griffin是一个开源的大数据质量解决方案, 2016年12月07日进入 Apache 孵化,由eBay开源,它支持批处理和流模式两种数据质量检测方式,是一个基于Hadoop和Spark建立的数据质量服务平台 (DQSP),如图3所示。它提供了一个全面的框架来处理不同的任务,例如定义数据质量模型、执行数据质量测量、自动化数据分析和验证,以及跨多个数据系统的统一数据质量可视化。
图3
Griffin由Define、Measure、Analyze三大模块组成,各个部分的职责如下:
Define:主要负责定义数据质量统计的维度,比如数据质量统计的时间跨度、统计的目标(源端和目标端的数据数量是否一致,数据源里某一字段的非空的数量、不重复值的数量、最大值、最小值、top5的值数量等)。
Measure:主要负责执行统计任务,生成统计结果。这一块主要技术栈使用的是Livy+ Spark,Spark作为执行引擎,Apache Livy基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行。
Analyze:主要负责保存与展示统计结果。
-现状分析:
- Griffin的社区并不太活跃,现在最新版本还是0.6,网上技术文档并不算太多, 担心出了问题比较难找到解决方案。
- 从技术栈的角度Livy过于小众,数据存储方面ES的运维对于一个小团队来说也比较麻烦。
- 针对数据检查任务的调度和数据检查结果的后续处理方面,Griffin一般还需要和现有的大数据调度平台打通,也有一定的工作量。
3.2 Apache DolphinScheduler
在2022年4月22日,Apache DolphinScheduler 正式宣布 3.0.0 alpha 版本发布,此版本中用户期待已久的数据质量校验应用功能上线,实现了数据质量的原生支持,支持在工作流运行前进行数据质量的校验,可由用户自定义数据质量的校验规则,实现了任务运行过程中对数据质量的严格控制和运行结果的监控,如图4所示。
图4
-现状分析:
- DolphinScheduler作为一个任务调度系统,具备了执行任务的基础,不需要引入新的组件来提交任务;
- 数据质量检查可以作为一种任务类型无缝接入到工作流当中;
- 无需新增其他服务来增加运维的难度;
- 可以很好地与社区共建开源。
基于以上现状,DolphinScheduler是一款比较适合与业务相结合进行二次开发的数据质量工具,但是目前仅适用于离线数据验证。
3.3 Deequ
Deequ是一个来自AWS实验室的开源工具,可以用来验证许多大型生产数据集的质量。数据生产者可以通过添加和编辑数据质量约束,使得系统定期计算数据质量指标。当数据质量约束成功时将数据集发布给消费者,错误时可停止数据集的发布,并通知生产者采取行动,这样数据质量问题就不会传播到消费者的数据管道,从而减少它们的爆炸半径。主要组件如图5所示。
图5
- 指标计算(Metrics Computation),Deequ 计算数据质量指标,即完整性、最大值或相关性等统计数据。Deequ 使用 Spark 从 Amazon S3 等源中读取数据,并通过一组优化的聚合查询计算指标。
- 约束验证(Constraint Verification),作为用户,可以专注于定义一组要验证的数据质量约束,Deequ负责利用该约束在数据集上进行计算,进而生成数据质量报告,其中包含约束验证的结果。
- 约束建议(Constraint Suggestion),可以选择自定义所需的数据质量约束,或使用自动约束建议方法来分析数据以推断有用的约束。
-现状分析:
- Deequ和spark关联密切,使用spark技术框架的可以考虑。
- 社区较为活跃,使用的较多。
3.4 Great Expectations
Great expectations是一个python的工具包,Python近几年在数据分析领域大放异彩,而Python本身对于数据质量问题的解决一直是一个大问题。而Great expectations正好弥补了这方面的不足。对于一些对Python支持良好的公司,可以优先选择Great expectations来进行数据质量的解决方案建设。
-现状分析:
- 版本更新快,Bug修复也快。
- 社区非常活跃,值得长期关注。