阅读 70

大数据质量监控与数据质量处理系统

1 大数据平台的数据质量概述

数据质量是大数据挖掘能否卓有成效的基础,在大数据领域里有一句广为流传的话叫“Garbage In,Garbage Out”, 也就是说输入数据的质量直接决定着数据处理结果。在大数据处理中,由于数据量巨大,数据价值有着低价值密度的特点,如果数据质量问题过多,那么噪声密度会直接影响价值密度,从而导致最终数据价值降低。
数据质量一般包含以下几个维度:


Data Quality Dimention.PNG

Completeness: 数据完整性。数据完整性指得数据平台获得的源数据相较于数据产生规模必须完整,如果有数据记录丢失,会导致数据整体形态的不完整,数据规律也不能得到良好的反应,从而最终算法处理的结果与世界数据规律之间也会产生较大的差距。
Consistency:数据一致性。指得是具有内在业务逻辑的数据之间必须保持内在逻辑的不丢失,比如,销售额=Σ(客单价*购买量), 平台获得的销售额,客单价和购买量数据,它们之间应该仍有这样的计算关系。如果这个计算关系不成立,那么数据一致性就丢失了。
Validity: 数据有效性。指得是数值相较于定义来说是有效的,比如,一个Revenue字段定义应为数值型,如果存储的数值是aaa, 那么这个值就是无效的。
Accuracy:数据精确性。通常对于数值型数据,数据平台会有最大位数和小数位数的定义范围,当数据平台中数值类型的定义无法兼容实际数据存储的要求时,数据精确性就可能丢失,比如,外部系统输入Price数据是3.2536,在大数据平台,数据工程师看到这个字段是货币字段,可能想当然的定义为含有2位小数的字段,那么数据存储结果就会是3.25,这样的会数据精确性就会丢失,通过这个字段衍生的其他计算精确性也会受影响。在数据精确性上,有一点要注意的是不同系统间的数值类型定义的一致性,如源系统中字段定义是Decimal,但是大数据平台定义的是Float,在这种情况下,数值存储在两边是看不出来区别的,但是当这个字段作为计算字段,尤其是作为计算中的除数字段时,由于实际存储的数值类型不同,最终计算出的精度也会不同。
Integrity:数据完整性。数据完整性指得是数据的总体一致性,包括不同表中的数据字段数值内在关系的一致性,并且关联数据在关联表中需要完整,没有丢失。
Timeliness:数据时效性。在大数据系统中,数据的生成速度越来越快,这就要求大数据处理系统的数据处理也要有高时效性,从而将最快的数据分析结果展现出来,及时提供给决策人员进行处理。
Uniqueness:数据特别性。指得是不能有重复数据。数据系统获得的数据相较于元数据系统记录要保持一致性,不能有重复数据。所谓重复数据要根据业务的实际需求来定义,尤其要分析源数据系统生成数据的规则和每一条数据代表的实际含义,不能仅仅通过维度字段来定义,在实际业务中,有多条记录有共同的维度字段的情况,如果简单的将维度字段设置成关联主键,容易将一些有效数据识别为无效数据,从而造成错误。

2 源数据的数据质量监控规则

数据质量监控系统的设计就是根据数据质量定义的几个维度定义监控规则。数据监控系统监控规则的设置是数据质量问题处理的基础,如果监控规则设置的过少,那么很多噪声数据(问题数据)不能被识别出来,如果监控规则设置过度,部分有价值数据可能被作为问题数据处理掉,从而减少了数据规模,也会影响数据最终完整性,因此合理设置监控规则很重要。这里监控规则的定义是根据具体业务系统的需求参照质量维度来定义的。因此,不同的业务系统规则定义设置是完全不同的,不同只是参照业界的做法草草决定自己系统的监控规则,这样是完全错误的。
一般我们可以用到的规则如下:
Completeness:空值检查(注意在源数据中,空值可能有几种表现形式:“Null”,“”,“ ”,“N/A”)
Uniqueness:重复记录检查(重复记录的识别方法需要按照源数据的存储方法来确定,关联主键的确定决定的重复记录的识别是否有效)
Validity:数据Format检查,包括数值类型,小数位数,日期字段的格式类型检查等;
Integrity/Consistency: 通过添加SQL检查不同字段/表数据的一致性/完整性。(这个规则的设置高度依赖于具体业务)

3 数据质量问题的处理方法

数据监控系统需要通过监控规则将异常数据识别出来,同时监控系统还要有合理的问题数据处理方法,从而解决问题数据,提升数据质量。下面介绍一些问题数据的处理方法。

3.1 移除问题数据

移除问题数据是最简单的数据问题处理方法,不过在使用移除问题数据方法之前,需要考虑几个问题:1. 需要移除的数据完全没有价值吗?2. 如果数据还有价值,有没有其他方法可以弱化问题数据部分带来的影响。
数据移除方法:
a. 通过监控规则识别问题数据;
b. 将问题数据和正确数据识别出来分别放到不同的地方(如:干净的数据放置路径:s3://{bucket}/{layer}/{domain}/{entity}/{data}; 问题数据放置路径:s3://{bucket}/quarantine/{layer}/{domain}/{entity}/{data} )
c. 需要设置邮件通知系统,当有数据被移除到问题数据路径中时,需要自动发送邮件通知相关人员,通知内容一般包括:问题数据记录,条数,移除到的问题路径。
d.移除问题数据后,剩下的干净数据可以继续其他的处理过程。

3.2 问题数据格式化

正如前一段问到的问题,当问题数据仍然有价值时,我们处理问题数据的第一选择是修正它,而不是移除它。修正数据需要根据数据的具体问题来修正。如果问题出在数据格式中时,可能有以下几种情况:
a. 日期/时间格式问题(如:2020/10/20->2020-10-20)
b. 数值类型在源文件中存储为String类型(如csv文件默认将所有数据都存储为String类型)
c. 小数位数(数据平台数值类型定义和小数位数需要保持和源数据的一致性)
d.String类型存储的内容使用的拼写,大小写不同(如相同含义,存储大小写不一致 "Men","men","MEN")

3.3 缺失数据的处理

3.3.1 数据缺失的原因

a. 数据尚未收集;
b. 拒绝提供数据;
c. 业务中本就不存在的数据(Not applicable)

3.3.2 如何处理数据缺失

a. 使用其他值的平均值,中位数,众数等进行缺失值填充;
b. 设置默认值(如生日值缺失时,使用1990-01-01进行填充)
c. 使用其他字段的计算值进行填充或者矫正(仅适用与该字段与其他表的字段有计算关系的情况)

3.4 问题数据的纠正

3.4.1 问题数据的出现原因

a. 收集数据时用户提供的数据错误;
b. 用户可以回避不提供正确数据(如问卷中的年龄,收入等数据)
c. 外部系统提供的数据错误

3.4.2 问题数据的矫正方法

  1. 监控规则设置边界值监控(如年龄>=5, 小于该值则按照invalid处理,当年龄为invalid时需分析年龄是否时用户可以提供的虚假信息,如果是,其他字段的数据可能是有效的)
  2. 设置默认值取代错误值;
  3. 通过其他字段的计算值矫正错误字段数值。

4 数据质量监控仪表盘

数据质量监控仪表盘对于数据分析人员来说很重要,数据分析人员可以通过数据质量仪表盘监控数据当前的质量,并判断其数据可靠性。
数据质量仪表盘可以合并到其他的数据仪表盘中进行显示,可以使用Tableau/Power BI等工具进行开发:


image.png

5 数据质量监控工具介绍

目前市面上有一些开源的监控工具如Amazon Deequ,Apache Griffin, 但这些工具大多只有监控功能,没有数据问题处理功能,一般数据工程师可以按照本文描述的方法进行监控规则设置,数据问题处理以及数据监控报表展示。
Deequ Git:https://github.com/awslabs/deequ
Deequ Introduction: https://aws.amazon.com/blogs/big-data/test-data-quality-at-scale-with-deequ/
Griffin Git: https://github.com/apache/griffin
Griffin Introduction: https://griffin.apache.org/docs/quickstart.html

作者:数据云

原文链接:https://www.jianshu.com/p/1cef28f91362

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐