【数据质量】一起聊聊数据质量

Garbage In, Garbage Out


​ 数据质量关注的是数据的健康,数据健康和人的健康很相似,人的健康会影响人的生活品质,同样数据的健康会影响数据的使用品质。为了保证我们健康,我们需要养成良好的生活习惯,膳食平衡,注意锻炼,定期体检,使我的的身体健康。同样数据也需要如此,我们需要好的开发规范,执行数据标准,定期数据质量评估,采取干预保持数据质量长青。

​ 正像我们需要医院一样,我们需要一个组织去管理数据质量,对症下药,用专业的方法、工具和相应的制度保障提高数据质量。

​ LeanData给出了数据质量的定义:

The degree to which data meets the requirements of the processes it is used in.

从定义来看数据质量是一个主观的、相对的,数据质量就是衡量数据满足使用需求的程度,什么是高质量的数据,完全能够满足用户需求的就是高质量的数据。我们再深入推导,对于不同用户对于相同的数据就有不同的评判,例如,对于一条客户信息,销售部门和采购部门就有可能给出不同的数据质量评价。走到这我们基本上了解了什么是数据质量的本质了,当我们做数据质量工作时,要有的放矢,需求是什么,质量痛点是什么,有的放矢,事半功倍。

数据质量管理方法

数据治理管理体系没有成熟的方法论,但是产品和服务的质量管理体系已经非常成熟。国际上有ISO9001、六西格玛等,大道相通,这些管理体系同样可以应用于数据质量管理,有人参照六西格玛搞了一个数据质量6步模型,有很好的借鉴意义,该模型如下:
【数据质量】一起聊聊数据质量_第1张图片

  • 定义阶段(Definition):从业务出发,搞清楚业务需求,业务目标,我们能通过数据质量的提高能获得什么,做这项工作的意义与价值,说直接点就是做好立项报告。
  • 评估阶段(Assessment):进行数据质量现状调研,从下面讲到的数据质量维度上多层级进行量化评估,分析对哪些业务造成不利影响。
  • 分析阶段(Analysis):分析当前数据现状和目标之间的差距,分析问题原因,制定解决方案。
  • 提高阶段(Improvement):基于上一阶段的分析,制定实施计划,相应的改善措施包括制度、组织、工具、方法。
  • 实施阶段(Implementation):依照上一阶段的实施计划进行实施。
  • 控制阶段(Control):建立长效机制,进行管控,持续优化改进。

数据质量维度

谈到数据质量,就必须了解评价数据质量的维度。正如《一起聊聊数据治理》中说的那样,数据治理成功的关键有一条是以绩效考核推动数据质量管理,因此有必要清楚的认识数据质量应该从哪些维度上评价,DAMA提出了数据质量的六个核心维度,见下图:

【数据质量】一起聊聊数据质量_第2张图片

  • 完整性(Completeness):完整性是指数据信息信息是否存在缺失的状况,常见数据表中行的缺失,字段的缺失,码值的缺失。比如虽然整体pv是正确的,但在某个维度下,只有部分打点,这就是存在完整性的问题。不完整的数据所能借鉴的价值就会大大降低,也是数据质量问题最为基础和常见的问题。常见统计sql:count( not null) / count(*)
  • 有效性Validity :有效性一般指范围有效性、日期有效性、形式有效性等主要体现在数据记录的规范和数据是否符合逻辑。规范指的是,一项数据存在它特定的格式,如:手机号码一定是11位的数字;逻辑指的是,多项数据间存在着固定的逻辑关系,如:PV一定是大于等于UV的。
  • 准确性(Accuracy):准确性是指数据记录的信息是否存在异常或错误。最为常见的数据准确性错误就如乱码。其次,异常的大或者小的数据也是不符合条件的数据。准确性可能存在于个别记录,也可能存在于整个数据集,例如数量级记录错误。这类错误则可以使用最大值和最小值的统计量去审核。
  • 及时性(Timeliness):及时性是指数据从开始处理到可以查看的时间间隔。及时性对于数据分析本身的影响并不大,但如果数据建立的时间过长,就无法及时进行数据分析,可能导致分析得出的结论失去了借鉴意义。比如:实时业务大盘数据,及时反映业务关键指标的情况,暴露业务指标的异常波动,机动响应特殊突发情况都需要数据的及时更新和产出。某些情况下,数据并不是单纯为了分析用而是线上策略用,数据没有及时产出会影响线上效果。
  • 一致性(Consistency):一致性是指相同含义信息在多业务多场景是否具有一致性,一般情况下是指多源数据的数据模型不一致,例如:命名不一致、数据结构不一致、约束规则不一致。数据实体不一致,例如:数据编码不一致、命名及含义不一致、分类层次不一致、生命周期不一致等。
  • 唯一性(Uniqueness): 在数据集中数据不重复的程度,唯一数据条数,和总数据条数的百分比。比如 count(distinct business key) / count(*),一般用来验证主键唯一性。

数据质量检查项

数据评估阶段通过数据报告来完成,利用应用统计方法返回一组关于数据的标准特征,该特征在各个数据治理维度展开,全面对数据在每个检查项上进行量化的统计,按照质量评价体系进行打分,初步评估报告的目的是获得对数据和环境的了解,并对数据的状况进行描述。

编号 数据质量维度 检查项 检查项说明
1 完整性 空值或字符串检查 主要包括实体缺失、属性缺失、记录缺失和字段值缺失四个方面
2 完整性 外键缺失检查 主外键完整性检查
3 完整性 外关联约束检查 例如楼盘表中的城市必须在城市维表中存在
4 有效性 格式规范检查 如日期格式检查、身份证格式、
5 有效性 数值范围检查 值域约束,如:楼栋高度在0-100之间
6 有效性 枚举值检查 业务规则定义约束
7 准确性 总和检查 根据参考值来判断合理性
8 准确性 平均值检查 根据参考值来判断合理性
9 准确性 最大值检查 根据参考值来判断合理性
10 准确性 最小值检查 根据参考值来判断合理性
11 及时性 更新频率检查 数据提取、传送、处理、装载、展现的周期
12 及时性 时间差检查 最新数据与当前时间的差值
13 一致性 单表等值一致检查 如上刊率=上刊时长/可用上刊时长
14 一致性 一致约束检查 如合同的结束日期不能早于开始日期
15 一致性 跨表等值检查 如:同一指标在多表中存在,需要保持数据值一致
16 一致性 同步一致检查 数据在迁移或者加工前后是否一致
17 唯一性 主键唯一检查 主键唯一
18 唯一性 符合字段唯一检查 联合主键唯一

数据质量监控工具介绍

目前市面上有一些开源的监控工具如Amazon Deequ,Apache Griffin, 但这些工具大多只有监控功能,没有数据问题处理功能,一般数据工程师可以按照本文描述的方法进行监控规则设置,数据问题处理以及数据监控报表展示。

  1. Deequ Git:https://github.com/awslabs/deequ

    Deequ Introduction: https://aws.amazon.com/blogs/big-data/test-data-quality-at-scale-with-deequ/

  2. Griffin Git: https://github.com/apache/griffin

    Griffin Introduction: https://griffin.apache.org/docs/quickstart.html

参考文章

  1. 数据质量漫谈
  2. Here is how to start with data quality
  3. 如何做好数据质量管理?
  4. 数据质量管理:6个维度,50个检查项!
  5. 大数据之数据质量检查

原文: 数据质量:一起聊聊数据质量

你可能感兴趣的:(数据质量,数据质量)