一篇文章说清楚如何提升大数据质量

2020 年 4 月 13 日

一篇文章说清楚如何提升大数据质量

正如大家所知,大数据建设的目标是为了融合组织数据,增加组织的洞察力和竞争力,实现业务创新和产业升级。而提高数据质量是为了巩固大数据建设成果,解决大数据建设成果不能满足业务要求的问题。并且,数据质量问题不仅仅是一个技术问题,它也可能出现在业务和管理的过程中。所以,要想提高数据质量,就必须懂行业、懂组织、懂业务。当然,正如“数据博士”Jim barker所说,我们可以简单地通过引入一些工具和规则就可以解决80%的问题,也可以引入一个复杂的系统工程来解决100%的质量问题,取决于我们希望达到什么样的质量标准。


借此机会,我也很期待各位朋友能够与我们分享你遇到的数据质量问题、故事和解决方法,这将对我们的研究和研发工作带来莫大的帮助。


为了尽量说清楚数据质量问题的来龙去脉和解决方法,篇幅较长,我将它分为以下几个部分:


  1. 大数据行业背景和现状

  2. 大数据行业发展过程中出现的问题

  3. 国家标准中的数据质量评价指标

  4. 数据质量出现的原因

  5. 解决数据质量问题的思路


大数据行业背景和现状


2014年大数据被写入政府工作报告,成为大数据政策元年,大数据开始成为热点;2015年国务院印发《促进大数据发展的行动纲要》,国家层面开始“大数据”顶层设计;2016年工信部发布《大数据产业发展规划(2016年-2020年)》,大数据上升为国家战略;2019年政府工作报告提出加强新一代信息基础设施建设(新基建),我们也逐步从“数据大国”迈向“数据强国”。



根据华为公司在 2019 年对其自身客户关于数字化转型的一项调查,只有 5% 的企业处于观望,31% 的企业在规划准备,36% 的企业已经开始先期试点,26% 的企业已经大规模推行,数据字化转型已经进入深水期。这意味着95%的企业已经开始数字化转弄的工作。


大数据经过6年的快速发展期,已经比较明显地分为两个阶段,第一阶段是大数据归集、治理和价值探索,第二阶段是大数据价值体现。当下,部分政府和企业已经在第一阶段中完成了数据的归集和治理,大步迈入数据价值体现的第二阶段,努力实现组织的业务创新和产业升级。



然而,大数据发展过程中仍然存在不少困难和问题,缺少整体规划和实施路径,缺少高层支持,部门壁垒难以打破,业务价值体现不足,技术能力不足,等等。就我个人来看,这里最核心的一个问题就是业务价值体现不足,没有业务价值的支撑,就不会有各部门领导的支持,更不会有高层的支持和资金的支持。所以,数字化转型一定要以价值为导向,在一个“点”上做出实际效果以后再进行“面”上的拓展。


大数据发展过程中的质量问题


要体现数据价值,前提就是数据质量的保障,质量没有得到100%保证的数据是很难体现出业务价值的,如果基于这些有问题的数据做决策支持,或做业务办理,将会得到灾难性的结果,让领导层和数据使用方对大数据失去信心。


根据哈工大王志宏先生在科技导报发表的研究表明,如果没有良好的数据质量,大数据将会对决策产生误导,甚至产生有害的结果。


  • 在数仓建设上,50%的数据仓库因数据质量而被取消或延迟。

  • 在经济损失上,数据错误每年对美国工业界造成的经济损失约占GDP的6%。

  • 在医疗事故上,根据美国医疗委员会的统计,由于数据错误引起的医疗事故仅在美国每年就导致高达98000名患者丧生。

  • 在电信产业上,数据错误经常导致故障排除的延误、多余设备租用和服务费收取错误,损害了企业信誉甚至会因此失去很多用户。

  • 在商业上,美国零售业每年仅因标价错误就损失25亿美元。

  • 在金融企业中:因数据质量问题导致的信用卡欺诈失察在2008年即造成48亿美元的损失。


被誉为“数据博士”的Jim barker,用一个简单的医学概念来定义两种类型的数据质量问题。


  • 第一类数据质量问题是比较简单而明显的问题,我们可以使用自动化工具检测到。

  • 第二类数据质量问题是非常隐秘的问题,大家都知道它是存在的,但它看不见摸不着,更处理不了,因为它需要放在特殊情境才能被检测到。


它们之间的区别简而言之可归纳为如下几点:


第一类数据质量问题首先需要“know what”才能来检测数据的完整性、一致性、唯一性和有效性。这些属性靠数据质量软件甚至手动很好地找到。你不需要有很多的背景知识,或者数据分析经验。只要按照4个属性验证它的存在,就可以判定它错误的。例如,如果我们在性别领域插入一个3,我们就可以判定它到底是不是一个有效值。


第二类数据质量问题需要“know why”来检测时效性、一致性和准确性属性。需要研究能力、洞察力和经验,而不是简简单单就可以找得出来的。这些数据集经常从表面上看起来没有问题。但是问题往往存在于细节中,需要时间去发现。Jim举的例子就是一份退休人员的雇佣记录,如果我们不知道他们早已退休的话,是看不出来这个数据是错的。


所以,解决这些数据质量问题的关键就是需要一个复杂的、策略化的方法,而非孤立的、片面的来看问题。一旦数据质量不好,我们就需要寻求自动化与人工的双重方式才能解决这个问题了。


根据Jim barker的经验:


第一类基本涵盖了80%的数据质量问题,但只消耗了我们20%的经费成本。


第二类数据问题往往需要多方的输入,以便发现、标记和根除。虽然我们客户关系管理系统中的每个人都有购买日期,但购买日期可能不正确,或者与发票或发货清单不符。只有专家才能通过仔细核查其内容来解决问题并手动改进客户关系管理系统。


第一类数据质量的挑战可以快速解决,但第二类问题提出了一个挑战,必须依靠人类的专业知识才可以解决。后面会介绍龙石数据的做法,我们可以简单地通过引入一些工具和规则就可以解决80%的问题,也可以引入一个复杂的系统工程来解决100%的质量问题,取决于我们希望达到什么样的质量标准。


国家标准中的数据质量评价指标


目前为止,最权威的标准是由全国信息技术标准化技术委员会提出的数据质量评价指标(GB/T36344-2018 ICS 35.24.01),它包含以下几个方面:



规范性:指的是数据符合数据标准、数据模型、业务规则、元数据或权威参考数据的程度。例如GB/T 2261.1-2003中定义的性别代码标准是0表示未知性别,1表示男,2表示女,9表示未说明。GB 11643-1999中定义的居民身份证编码规则是6位数字地址码,8位数字出生日期码,三位数字顺序码,一位数字校验码。


完整性:指的是按照数据规则要求,数据元素被赋予数值的程度。例如互联网+监管主题库中,监管对象为特种设备时,监管对象标识必须包含企业统一社会信用代码+产品品牌+设备编码,监管对象为药品时,监管对象标识必须包含药品名称+批准文号+生产批号。


准确性:指的是数据准确表示其所描述的真实实体(实际对象)真实值的程度。例如互联网+监管行政检查行为中的行政相对人为公民时,证件类型和证件号码只能是身份证号码。


一致性:指的是数据与其它特定上下文中使用的数据无矛盾的程度。例如许可证信息与法人基础信息是否一致,检查计划与检查记录是否匹配。


时效性:指的是数据在时间变化中的正确程度。例如企业住址搬迁后,企业法人库中的住址是否及时更新了。营业执照已经办理,许可照办理时是否可以及时获取到营业执照信息。


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


除此之外,还有一些业内认可的补充指标,并且在质量工作的实际开展中,可以根据数据的实际情况和业务要求进行扩展,例如:


唯一性:描述数据是否存在重复记录(国标归在准确性中)。


稳定性:描述数据的波动是否是稳定的,是否在其有效范围内。


可信性:描述数据来源的权威性、数据的真实性、数据产生的时间近、鲜活度高。


数据质量问题出现的原因


大数据的建设和管理是一个专业且复杂的工程,涵盖了业务梳理、标准制定、元数据管理、数据模型管理、数据汇聚、清洗加工、中心存储、资源目录编制、共享交换、数据维护、数据失效等等过程。在任何一个环节中出错,都将导致数据的错误。甚至,源头数据本身就是错误的。所以,数据质量问题不仅仅是一个技术问题,它也可能出现在业务和管理的过程中。



数据质量的技术因素:


  • 数据标准制定的质量问题:数据输入规范不统一,不同的业务部门、不同的时间、甚至在处理相同业务的时候,由于数据输入规范不同,造成数据冲突或矛盾。如果在数据的生成过程中包含主观判断的结果,必然会导致数据中含有主观的偏见因素。并且,不是所有行业都有公认可信的数据标准,而组织标准制定过程中容易出现数据元描述及理解错误,代码码集定义不正确、不完整等情况。

  • 数据模型设计的质量问题:由于对业务理解的不到位或技术实践水平不到位,数据库表结构、数据库约束条件、数据校验规则的设计不合理,造成数据存储混乱、重复、不完整、不准确。

  • 数据源本身存在质量问题:在生产系统中有些数据就存在不规范、不完整、不准确、不一致等问题,而采集过程没有对这些问题做清洗加工处理,或清洗加工的程序代码不正确。

  • 数据梳理过程的质量问题:在数据采集之前,需要梳理组织机构、业务事项、信息系统、数据资源清单等信息,那么对业务的理解不到位,将造成梳理报告的不完整或不正确。

  • 数据采集过程的质量问题:采集点、采集频率、采集内容、映射关系等采集参数和流程设置的不正确,数据采集接口效率低,导致的数据采集失败、数据丢失、数据映射和转换失败。

  • 数据清洗加工的质量问题:数据清洗规则、数据转换规则、数据装载规则配置有问题,甚至未按照数据标准开展相应的清洗加工工作,自由发挥的空间过大。并且在数据汇聚的过程中,没有及时建立数据的相关性,导致后期很难补充完善。


数据质量的业务因素:


  • 业务理解不到位:数据的业务描述、业务规则、相关性分析不到位,导致技术无法构建出合理、正确的数据模型。

  • 业务流程的变更:业务流程一变,数据模型设计、数据录入、数据采集、数据传输、数据清洗、数据存储等环节都会受到影响,稍有不慎就会导致数据质量问题的发生。

  • 数据输入不规范:常见的数据录入问题,如:大小写、全半角、特殊字符等一不小心就会录错,甚至还会将数据输入到错误的字段中,造成“张冠李戴”。人工录入的数据质量与录数据的业务人员密切相关,录数据的人工作严谨、认真,数据质量就相对较好,反之就较差。

  • 业务系统烟囱林立:过去20年中,只要是稍大一点的企业和政府部门,都建设了一批信息化系统来解决业务问题,但也导致了如今信息化整合的痛点和困难,变先发优势为数据困境。

  • 数据作假:操作人员为了提高或降低考核指标,对一些数据进行处理,使得数据真实性无法保证。


数据质量的管理因素:


  • 人才缺乏:组织以自身的业务发展的主要原则组建团队,数据建设则依赖于外部服务公司,而自身没有建立相应的管理手段和监督机制,从而无法准确判断数据项目的建设成效。

  • 流程管理不完善:缺乏有效的数据质量保障机制和问题处理机制,数据质量问题从发现、指派、处理、优化没有一个统一的流程和制度支撑,数据质量问题无法闭环。

  • 成员意识不开放:组织管理缺乏数据思维,没有认识到数据质量的重要性,重系统而轻数据,认为系统是万能的,数据质量差些也没关系。组织成员没有从组织战略的视角来看待数据资产,而把数据看成是创造它的部门的资产,从而导致数据冗余、数据不一致、数据割裂,从而导致数据价值难以发掘。

  • 奖惩机制不明确:没有明确数据归口管理部门或岗位,缺乏数据认责机制,出现数据质量问题找不到权威源头或找不到负责人。缺乏数据规划,没有明确的数据质量目标,没有制定数据质量相关的政策和制度。


如何解决质量问题


如前所述,大数据的建设和管理是一个专业且复杂的工程,涵盖了业务梳理、标准制定、元数据管理、数据模型管理、数据汇聚、清洗加工、中心存储、资源目录编制、共享交换、数据维护、数据失效等等过程。中间任何一个环节出问题,都将导致数据质量问题。


大部分大型组织经过大数据建设,已经获得比较好的数据建设成果,也有了比较可观的数据量的积累,但将这些数据直接拿来支撑业务的办理却是一个很大的风险,原因就是只要一笔数据不正确,都可能带来很大的业务风险,导致客户的报怨,这也正是业务部门对大数据建设成果报有怀疑态度的重要原因。龙石数据根据多年数据治理和数据质量实践经验,根据大数据建设项目的执行过程,将它分为事前预防、事中监控、事后改善三个阶段。



事前预防


  • 制定质量管理机制:基于数据管理的复杂性和诱因的多重性特点,解决数据质量问题仅仅依靠一个技术工具是不够的,我们需要建立长效工作机制。即根据组织特点,制定符合自身环境的工作制度,制定每个环节的工作流程,规定各个参与方的责任,确定各项数据的权威部门,制定数据质量指标,制定数据质量修复流程等等。

  • 制定数据质量标准:数据标准成功定义的与否,直接决定了大数据建设的成果和数据质量的高低,需要在融合国家标准、行业标准和地方标准的基础上,融合组织自身的业务特色需求。

  • 制定质量监测模型:数据质量模型代表的是业务需求,它是从业务需求的角度而描述出来的质量需求。

  • 制定质量监测规则:数据监测规则代表的具体的质量检测手段,它是从技术角度来描述数据质量要求是如何被满足的,包括规范性、完整性、准确性、致性、时效性、可访问性,等等。


事中监控


  • 监控原始数据质量:数据采集工作从数据源头获取最原始的数据,在数据采集过程中将数据分为“好数据”“坏数据”,“好数据”入库,“坏数据”则反馈给源头修复,因为数据来源部门最懂这些数据,也最能在源头上把数据问题彻底修复掉。

  • 监控数据中心质量:经过各种采集、清洗、加工过程,数据被存入数据仓库中,这些数据也将被业务部门使用,所以,对于这些成果数据的质量监控和修复则犹为重要。对于这类数据问题,我们可能使用简单的空值检查、规范性检查、值域检查、逻辑检查、一致性检查、等等规则就可以检查出来,也可能需要诸如多源比较、数据佐证、数据探索、波动检查、离群检查等等方法才可以检查出来。

  • 反馈数据质量问题:数据质量监控过程中,会发现两类问题,一类是源头的数据质量问题,一类是数据中心的数据质量问题,数据质量团队需要将这些问题及时反馈给源头部门和数据仓库建设团队。

  • 考核数据质量考核:数据质量的考核是为了能够引起各个参与部门和参与团队对数据质量的重视,需要及时统计分析各种数据质量问题,并制定出相应的应对措施。


事后改善


  • 修复数据质量问题:发现质量问题不是最终的目标,我们仍要建立相关的流程和工具,通过手工、工单、自动化等等手段将质量问题修复掉,从而为业务创新提供可靠的数据支撑。

  • 收集数据质量需求:通过数据中心的建设,质量问题的修复,必然能够促进数据的应用,我们仍要建立通畅的数据质量反馈通道,让各个部门参与到数据质量的再次完善中来,从而形成建设、应用和反馈的良性循环。

  • 完善质量管理制度:制度和流程的建设并不是一蹴而就的,我们要在数据建设和质量完善的过程中,结合自身组织结构和业务特色,不断完善工作制度。

  • 完善数据质量标准:各行各业不断涌现新的业务形态,原有的业务也在不断的变化,我们要紧跟业务的变化,不断完善符合业务需求的数据标准。

  • 完善质量监测模型:如前所述,监测模型代表的业务需求,业务形态的变化、数据标准的变化和质量新需求的出现,同样要求监测模型能够做出相应的变化。

  • 完善质量监测规则:同样,如今的信息化技术发展日新月异,我们要不断引入各种新技术来更加智能地发现和修复数据质量问题。


总结


最后,我们要想把大数据建设做好,就要把数据质量做好。要把数据质量做好,就要充分理解业务,要了解大数据建设的全部过程,要从更高的视角来发现和解决大数据建设过程当中的各种问题。


作者介绍


苏槐,微信号 Sulaohuai,现服务于龙石数据,曾就职于神州数码、Oracle、新加坡电信等企业。擅长数据治理、容器技术、微服务架构及技术管理。


参考资料



2020 年 4 月 13 日 10:06 7482

评论 6 条评论

发布
用户头像
非常全面的文章,指导性很强!
2020 年 05 月 06 日 10:33
回复
用户头像
整个方法论相当全面,实操层面希望能多写一些
2020 年 04 月 20 日 14:11
回复
用户头像
哈工大 王宏志老师,写错了吧
2020 年 04 月 20 日 14:00
回复
用户头像
该评论已删除
2020 年 04 月 13 日 14:57
回复
2342343
2020 年 04 月 13 日 14:57
回复
123123
2020 年 04 月 13 日 14:57
回复
没有更多评论了
发现更多内容

奈学教育:Hadoop源码编译全流程分享

奈学教育

MyBatis之启动分析(一)

ytao

mybatis Java 面试

读懂才会用 : 带你见识 Redis 的 zset

小眼睛聊技术

redis 学习方法 程序员 架构 redis6.0.0

Kafka的生产者优秀架构设计

奈学教育

kafka 分布式

计算机超全核心技术知识

cxuan

后端 计算机基础

这场大数据+AI Meetup,一次性安排了大数据当下热门话题

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Java 走过的创新25年

田晓旭

Java25周年

Flink 1.10 SQL、HiveCatalog 与事件时间整合示例

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Flink Weekly | 每周社区动态更新-20200520

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

如何挑选一份工作

池建强

求职 找工作

CSS Tricks网站创始人作序推荐,这本书助你成为Web开发高手

图灵社区

CSS Web 开发 设计思维

一文让你快速上手 Mockito 单元测试框架

mghio

Java spring 单元测试 Mockito

【大厂面试02期】Redis过期key是怎么样清理的?

NotFound9

Java 数据库 redis 架构 后端

吉德热泵烘干机解放阳台,引领生活品质新风尚

infoq小陈

产品的本质,知道却看不到

Neco.W

产品 产品经理 需求 产品开发

OFD版式技术解析系列(一):开篇

华宇法律科技

Docker 容器优雅终止方案

米开朗基杨

Docker

浅谈敏捷开发中的设计

czjczk

敏捷开发

缓存与存储的一致性策略:从 CPU 到分布式系统

伴鱼技术团队

缓存 系统设计 cpu 系统架构 架构模式

一周信创舆情观察(5.25~5.31)

统小信uos

基础软件 操作系统 新基建

入门到放弃:理清前端技术概念

大伟

ecmascript 前端 JavaScripte Node

原创 | TDD工具集:JUnit、AssertJ和Mockito (十六)编写测试-有条件执行测试

编程道与术

Java 编程 TDD 单元测试 JUnit

女朋友跟我吐槽Java中ArrayList遍历时删除元素的各种姿势

NotFound9

Java 架构 面试 编程语言 后端

Shell 文本处理一则

wong

Shell sed grep

Mobaxterm (安装 、汉化、使用)入门教程

Geek_Offset

如何更好的交谈(以英语为例)

七镜花园-董一凡

英语学习 生活

普通二本,毕业三年,北漂之后,我是怎么成为程序猿的。

why技术

个人成长 程序人生 随笔杂谈 北漂

千万别学编译原理

池建强

编译原理

JAVA后端学习路线

敖丙

Java 程序员 学习路线 学习资源 Java25周年

分享一份阿里架构师 651 多个技术分支的脑图

奈学教育

大数据

手撕编译原理:汇编语言不会编

贾献华

极致体验 全球布局—构建安全且高速的企业级CDN研讨会

极致体验 全球布局—构建安全且高速的企业级CDN研讨会

一篇文章说清楚如何提升大数据质量-InfoQ