# 数据质量控制
数据是对现实世界的反映,数据质量指的是数据在多大程度上反映了真实世界,如果数据与我们现实的意义和目的不一致,那数据就有质量问题。如果数据存在质量问题,那使用什么业务系统都没有办法反映出真实世界的状况,错误或者不完整的数据会直接导致BI和CRM系统不能正常发挥优势,或者导致系统实效。
使用低质量的数据,也会让各种模型结果出现较大的偏差,IBM曾经做过一项调查,最后的结果是数据分析人员每天有30%的时间浪费在辨别“脏数据”上,低劣的数据质量将直接产生数据统计分析不准确,误导高层决策等问题。高质量的数据常常有:完整性、唯一性、一致性、准确性、有效性、即时性等特征。
# 数据质量问题的来源
数据质量低是一个系统问题,常常由多方面原因导致,从技术方面来说,导致数据质量低下通常有:数据采集、数据存储、数据集成、数据分析这几个方面的来源:
- 数据采集问题:主要体现在采集标准缺失,标准执行不到位,源数据不规范或网络延时问题。例如,在很多数据采集的过程中缺乏标准规范,系统并没有对数据格式进行约束,这就会导致用户填写时出现错拼、漏填等现象,爬取、下载或购买的源数据集缺乏数据时效性,不能保障数据完整准确,传感器故障、网络延时也会导致数据丧失完整性和时效性。
- 数据存储问题:主要体现在元数据管理水平低下,数据模型不完善,软硬件故障等问题。例如,血缘关系不明确会导致表中的属性含义不明确,致使业务人员没办法使用含义不明的数据,数据模型不完善可能会使数据遗漏主键和时间戳等信息,导致数据丧失唯一性和时效性,另外软硬件的问题也会让数据在存储的过程中遗漏或者丢失。
- 数据集成问题:主要体现在源数据不规范,业务流程中装载规则设置错误以及部分人为因素。例如,源数据表出现同义不同名、同名不同义、甚至截断数据。业务流程中如果没有明确的设置数据能否覆盖等规则,可能会产生数据只会进行update操作,而不是进行缓慢变化维度记录。另外企业内部的政治斗争或者集团部门之间的部门墙,也会加剧数据孤岛是产生。
- 数据分析问题:主要体现在没有准确探查数据这方面。例如对表进行join操作时,没有仔细观察数据,最终出现了笛卡尔积,聚合后的表产生了错误的结果,丧失了数据的唯一性和准确性。
除了上述几类问题,导致数据质量问题还有业务和管理方面的原因。业务方面主要体现在业务需求不明确,需求变更频繁,业务数据造假等问题。管理方面主要体现在领导层缺乏数据思维,企业整体缺乏认责机制,团队没有明确数据的目标,组织没有统一的数据规范和管理机制,无法形成质量控制措施。所以,完善数据管理机制是保障数据质量的关键,规范业务流程才能让数据质量管理有条不紊的进行。
# 数据质量问题的控制方式
数据质量控制策略应该形成数据的事前预防控制、事中过程控制和事后监督控制,事前以预防为主,事中加强控制,事后评估优化,对数据进行闭环管理。
数据质量问题的事前预防控制最有效的方法是找出发生数据质量问题的根本原因,并采取对应的策略进行解决。主要手段是建立数据标准化模型,构建数据分类和编码体系,利用模型的约束和体系的要求,事前从数据源头解决质量问题。
事中数据质量的控制是指在数据的维护和使用的过程中,去监控和保障数据质量,通过建立数据质量的流程化控制体系,对数据的新建、变更、采集、加工、装载、应用等各个环节进行流程化控制。例如,在数据创建和变更时需要审批才能落库采集,清洗和转换的过程中使用监测数据是否按标准进行处理,装载应用前监测数据质量达标才允许使用。
数据质量的事后监督控制是要求企业定期开展数据质量和检查清洗工作,将数据质量治理作为一个常态化的工作来进行,事后监督通常包含数据质量规则制定、数据质量检验、质量偏差告警、数据分析报告、业务流程优化等步骤,具体步骤如下:
数据质量也可以通过数据剖析、数据质量评估、数据预处理等流程进行控制。
数据剖析是指对数据内容进行系统化的探查、统计和记录,例如剖析表和表之间,列和列之间的依赖关系,数据的粒度、数据精度,产生数据的业务规则,通过业务规则去剖析字段的类型、长度、值域是否合理,以及哪些列数据可能会重复记录,列的默认值,列的空值应该如何处理等问题。
数据剖析是变被动为主动改善数据质量的第一步,它让我们了解数据的结构、内容、规则以及关联关系概况,最终形成统计记录。数据可以通过如下几个方向进行探查:
- 完整性:探查每个列是否有空值或者空字符串,探查维度表是否包含事实表的所有主键。
- 唯一性:检查单列是否有重复值,检查某个列的组合是否有重复值。
- 及时性:检查是否有时间戳,某个时间段内是否有数据缺失的情况。
- 有效性:检查数据的业务属性(格式、类型、范围),数据类型(字符串、整型、浮点型、指针型等),格式和范围等。
- 准确性:根据业务规则,进行约束检查,根据统计信息判断数据是否有异常。
- 一致性:对比两个或多个业务定义规则或口径差异,检查跨多数据集的一致性,分析跨多个数据项的数据值和格式。
下图是经过数据剖析后的数据统计记录:
除了数据剖析外,还需要结合具体的业务情况来对数据进行综合考量,以得到正确的处理方式,很多时候异常值是数据质量问题,但是某种业务场景下异常值又是合理合法的,例如有些机器的异常参数,正是我们想要采集和监控的数据值。对于数据质量的定义也需要业务知识,对数据正确的理解需要行业领域专家的配合,在不同的场景和业务诉求下,对于数据是要求各不相同。
对数据有一个清晰的评估后,就可以进行数据预处理流程了,数据预处理包含数据清洗和数据加工两个环节。数据清洗主要是对源数据进行一定的类型转换、去重、异常值处理和缺失值填充等工作,数据清洗目的是为了保证数据的完整性、准确性和一致性。清洗后的数据可以进行一定的采样和过滤或者特征工程加工,加工后的数据可以进行数据分析或者人工智能应用。
在整个数据质量的控制过程中,人是关键因素,想要长期保证数据的高质量,需要从如下几个方面入手:
- 权衡企业内外部因素,建立数据标准,明确数据定义。
- 建立一个可复用的数据收集、数据预处理和数据维护流程,以便应对不断变化的业务环境。
- 在数据预处理流程中设立多个监控点。
- 对流程不断进行改善和优化,要认识到数据治理是一个持续的过程,质量改善要能够灵活变通。
- 把责任落实到人,制定数据采集、存储、集成、分析等各项活动质量指标。
下图是阿里云数据质量检查的最佳实践: