• 0
  • 0
分享

  Part 01、  什么是数据质量管理 

  数据质量管理,是DAMA数据管理知识体系指南中数据治理领域非常重要的一部分(图1 所示),主要是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。

1-1.jpg

  Part 02、 数据质量问题原因及评价标准 

  数据在计划、获取、存储、共享、维护等各个环节都有可能引发数据质量问题,主要原因分为几下几个方面:

  数据不完整:由于企业信息系统的孤立使用,各个业务系统或模块按照各自的需要录入系统,没有统一的录入工具和数据出口,业务系统不需要的信息就不录,造成同样的数据有不同的信息属性,再或者取数动作不规范,或许某个数据本身就是采集过来的,本来就是不完整的,数据完整性无法得到保障。

  数据不合规:没有统一的数据管理平台和数据源头,数据生命周期管理不完整,同时企业各信息系统的数据录入环节过于简单且手工参与较多,就数据本身而言,缺少是否重复、合法、对错等校验环节,导致各个信息系统的数据不够准确,格式混乱,各类数据难以集成和统一,没有质量控制导致海量数据因质量过低而难以被利用。

  数据时效性差:大数据项目对数据的时效性要求是非常严格的,比如离线项目是每天计算前一天的数据,如果前一天的源数据因为某些原因没有被及时的传输过来,这样就会严重影响后面指标的计算以及报表的生成。

  数据冗余:各个信息系统针对数据的标准规范不一、编码规则不一、校验标准不一、且部分业务系统针对数据的验证标准缺失,造成了企业顶层视角的数据出现“一物多码,一码多物”等现象。

  数据不精确:数据的精确性也是指数据的准确性,是指数据是否与目标值匹配;比如一个订购金额,如果远远大于或低于常规的数值,那么我们就要怀疑这个的数据的精确性不够。

  那么如何判断数据质量的优劣?从哪些方面可以评估数据质量?在实践中,我们可以通过数据质量评估维度进行评估。数据质量评估维度是数据质量的特征之一,它们为度量和管理数据的质量提供了一种途径和标准。在一个具体的数据质量项目中,要选择最适用于业务需求的数据质量维度进行测量,以评价数据的质量。

  在《GB/T36344-信息技术数据质量评价指标》中,国家标准化管理委员会明确了数据质量评价指标框架如图2所示。

1-2.png

  · 规范性:数据符合数据标准、数据模型、业务规则、元数据或权威参考数据的程度。

  · 完整性:按照数据规则要求,数据元素被赋予数值的程度。

  · 准确性:数据准确表示其所描述的真实实体(实际对象)真实值的程度。

  · 一致性:数据与其他特定上下文中使用的数据无矛盾的程度。

  · 时效性:数据在时间变化中的正确程度。

  · 可访问性:数据能被访问的程度。

  Part 03、目前常用的数据质量管理工具 

  3.1 Apache Griffin

  Griffin是一个开源的大数据质量解决方案, 2016年12月07日进入 Apache 孵化,由eBay开源,它支持批处理和流模式两种数据质量检测方式,是一个基于Hadoop和Spark建立的数据质量服务平台 (DQSP),如图3所示。它提供了一个全面的框架来处理不同的任务,例如定义数据质量模型、执行数据质量测量、自动化数据分析和验证,以及跨多个数据系统的统一数据质量可视化。

1-3.png

  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所示。

1-4.png

  -现状分析:

  · DolphinScheduler作为一个任务调度系统,具备了执行任务的基础,不需要引入新的组件来提交任务;

  · 数据质量检查可以作为一种任务类型无缝接入到工作流当中;

  · 无需新增其他服务来增加运维的难度;

  · 可以很好地与社区共建开源。

  基于以上现状,DolphinScheduler是一款比较适合与业务相结合进行二次开发的数据质量工具,但是目前仅适用于离线数据验证。

  3.3 Deequ

  Deequ是一个来自AWS实验室的开源工具,可以用来验证许多大型生产数据集的质量。数据生产者可以通过添加和编辑数据质量约束,使得系统定期计算数据质量指标。当数据质量约束成功时将数据集发布给消费者,错误时可停止数据集的发布,并通知生产者采取行动,这样数据质量问题就不会传播到消费者的数据管道,从而减少它们的爆炸半径。主要组件如图5所示。

1-5.png

  指标计算(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修复也快。

  · 社区非常活跃,值得长期关注。


作者:移动Labs    

来源:http://www.51testing.com/html/61/n-7798261.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 快速迭代测试中经常遇到这种场景:假设今天17号周三,接到测试任务26号(周五)必须发布现场,22号(周一)给版本,能测试完成么?下周一:研发延期,周三才能给出,能测试完成么,周五必须发布现场........思路:测试这些功能+环境的工作量测试预估多少,现在可以安排几个人,根据人员、时间确定测试那些测试以及测试颗粒度。版本发布现象需要哪些测试:1、每个(dev--->test--->stage--->prod)环境冒烟测试—各2H;2、Bug验证,根据Bug数量、复现难易程度来确定;3、每个环境测试,详细测试(安装部署+功能详细测试+异常+专项等)预计两周;4、上版本服务器(必...
            1 2 3668
            分享
          • 普通的移动app是需要安装的,但是绝大部分的app不会经常使用,但仍然会占用手机存储空间,所以开始出现免安装app,微信小程序实际是一种免安装的app。类似的比如华为、小米等手机厂商推出的快应用、支付宝小程序。微信小程序实际是运行在微信之上。小程序的类网页经过微信翻译之后以http数据的形式和服务器进行交互。小程序无法脱离微信来进行使用。微信小程序的页面可以包含:1、小程序页面(WXML+WXSS)2、M页页面(H5移动网页)3、toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失)4、弹窗微信小程序功能测试微信小程序分为三个版本:1、开发版2、体验版(需要在...
            8 8 1421
            分享
          •   作为一个30+的女性IT从业者,在体力、精力等方面已经远远赶不上年轻人了,不管是在日常的工作中还是面试中,都处于弱势地位。  30+的女性,在面试的时候,面试官都会问到一个问题,就是婚育情况,没结婚的问有没有对象,有了对象的问啥时候结婚,结了婚的问有没有孩子,有孩子的问要不要二胎三胎等等。  这些问题也成为女性员工就业、升职等的重要影响因素,只要有一项回答的不满意,你就会被pass掉,因为招聘者也怕你去他公司生孩子,毕竟产假那么长时间,有了孩子的怕你因为孩子耽误工作。那么我们作为一个30+的女性,应该如何应对这些情况呢,或者说如何打破这种困境呢?  做好充分准备  接到面试通知的时候,不能...
            0 0 969
            分享
          • 一、什么是软件测试软件测试是为了发现错误而执行程序的过程,为保证软件质量而采取的措施。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(输入以及预期的输出结果),并利用这些测试用例去运行程序,以发现程序中的错误。二种思维:正向:验证程序是否正常执行以及是否达到用户预期的需求。反向:为发现错误或缺陷而进行的一系列活动。二、软件测试的目的发现软件缺陷,提高软件质量。以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避因软件发布后由于潜在的缺陷和错误造成的隐患带来的商业风险。三、什么是需求文档测试需求文档是否符合用户要求、...
            0 0 1476
            分享
          • JMeter原生支持多种不同的取样器(HTTP、TCP、JDBC、JMS等),每一种不同类型的取样器可以向服务器发送不同协议类型的请求。除了开箱即用的协议支持以外,JMeter还支持用户自己开发新协议的测试插件来进行扩展。用户开发定制化的取样器插件,首先需要开发取样器的图形界面,扩展实现JMeter的AbstractSamplerGui类;然后开发取样器的处理逻辑类,扩展实现JMeter的AbstractSampler类,实现协议交互,发送请求报文并处理返回的响应结果;最后将开发调试好的代码编译,与描述了依赖关系的pom.xml一起打成JAR包,拷贝到JMeter的lib\ext目录下,其它相...
            1 1 2673
            分享
      • 51testing软件测试圈微信