查看原文
其他

企业数仓DQC数据质量管理实践篇

涤生-宇哥 涤生大数据
2024-12-05

一.数据质量管理背景

  以大数据平台的核心理念是构建于业务之上,用数据为业务创造价值。大数据平台、数据仓库的搭建之初,优先满足业务的使用需求,数据质量往往是被忽视的一环。但随着业务的逐渐稳定,数据质量越来越被人们所重视。

   现在数据仓库层面的工作越来越多,开发人员也越来越多,如何保障数据准确性是一项非常重要的工作,数据仓库的很多应用数据直接呈现给用户或者支撑企业分析决策的,容不得数据出现错误。随着开展的业务越来越多,数据模型越来也多,我们管控的越晚就越容易出问题。尽管有数据仓库建设规范,同样在数据模型命名,数据逻辑开发,每个人都可能不一样,而这些也容易导致数据模型准确性的问题。

    千里之堤,溃于蚁穴,糟糕的数据质量往往就会带来低效的数据开发,不准确的数据分析,最终导致错误的业务决策。所以我们迫切需要制定一套数据的准确性验证流程,让大家都按规范流程来做,保障数据的准确性。

二.数据质量管理定义

    数据质量管理(Data Quality Management),是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一系列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。

    数据质量管理不是一时的数据治理手段,而是循环的管理过程。其终极目标是通过可靠的数据,提升数据在使用中的价值,并最终为企业赢得经济效益

三.数据质量管理影响因素

     数据问题的来源可能产生于从数据源头到数据存储介质的各个环节。在数据采集阶段,数据的真实性、准确性、完整性、时效性都会影响数据质量。除此之外,数据的加工、存储过程都有可能涉及对原始数据的修改,从而引发数据的质量问题。所以,技术、流程、管理等多方面的因素都有可能会影响到数据质量。

     在企业中,随着企业业务的增长,数据也是一个增量积累的过程。随着数据类型、数据来源的不断丰富以及数据数量的快速增长,企业在数据管理工作和数据流程中面临越来越多的数据质量问题。而且数据质量的管理并没有被企业重视起来,其根本原因还是ROI并没有那么明显。     

    数据质量管理相对来说成本比较高。因为它涉及到企业数据标准的制定、规范的落地、生命周期的管理等多个环节。从收益上来说,数据质量的效益和结果并不是十分明显,大部分企业不会把数据质量作为KPI。在企业的不同系统中,业务领域的关键指标不一致,数据无法共享导致出现数据孤岛,大量数据无法关联,并且有明显的数据冗余等问题,还有数据的维护需要投入大量的人员、时间、软硬件成本。所以数据的质量管理往往被会边缘化甚至趋向于无。

四.数据质量管理的维度

1、数据完整性

完整性指的是数据信息是否存在缺失的状况,数据缺失的情况可能是整个数据记录缺失,也可能是数据中某个字段信息的记录缺失。

2、数据规范性

规范性指的是描述数据遵循预定的语法规则的程度,是否符合其定义,比如数据的类型、格式、取值范围等。

3、数据一致性

一致性是指数据是否遵循了统一的规范,数据集合是否保持了统一的格式。数据质量的一致性主要体现在数据记录的规范和数据是否符合逻辑,一致性并不意味着数值上的绝对相同,而是数据收集、处理的方法和标准的一致。常见的一致性指标有:ID 重合度、属性一致、取值一致、采集方法一致、转化步骤一致。

4、数据准确性

准确性是指数据记录的信息是否存在异常或错误。和一致性不一样,存在准确性问题的数据不仅仅只是规则上的不一致,更为常见的数据准确性错误就如乱码,其次异常的大或者小的数据也是不符合条件的数据。常见的准确性指标有:缺失值占比、错误值占比、异常值占比、抽样偏差、数据噪声。

5、数据唯一性

唯一性指的是数据库的数据不存在重复的情形。比如真实成交 1 万条,但数据表有 3000 条重复了,成了 1.3 万条成交记录,这种数据不符合数据唯一性。

6、数据及时性

及时性是指数据从产生到可以查看的时间间隔,也叫数据的延时时长。比如一份数据是统计离线今日的,结果都是第二天甚至第三天才能统计完,这种数据不符合数据及时性。

五. 数据质量实施流程

1、事前管理

1)测试验证

测试验证方法如下:

  • 总量核对,核对上下两步的数据总条数,没有过滤条件的话应该是一致的。

  • 多维度统计,复杂的多维度指标拆分成单维度SQL统计,对每个指标分别进行核查。

  • 多表关联统计,拆分成中间表进行核对每一步骤的指标。

  • 明细到指标统计,比如随机找一台车的明细和最后统计的指标进行核对。

  • 新老统计对比,比如有些指标是迁移或者之前业务手工制作,可以开发后的新指标同老指标进行对比。

测试需要有专门的数据测试人员进行测试,输出测试用例和测试报告。

2)上线审核

需要对上线的SQL代码进行审核,主要从以下几个方面:

  • 对查询表的where后面的条件、join关联字段、group by分组字段等重点检查逻辑,和需求理解结合审核。

  • 数据集命名、数据集字段命名、任务名称进行审核,是否按照数据仓库建设规范中的业务域、维度、原子指标、修饰类型、修饰词、时间周期、派生指标等标准进行命名。

  • 代码注释审核,每一步处理需要有注释该步骤的作用,每个指标也要有注释,where条件等也要添加注释。

  • 重要任务是否开启短信告警,任务启动时间等审核。

  • 任务上线的位置是否符合上线标准,比如上线的数据层级与业务层级等。

上线审核需要审核人员按照以上步骤进行审核,对不合理的地方进行指正,审核人员和开发人员共同保障代码质量。

3)流程规范

l 需求上线时候需要在知识库中完成所开发需求逻辑说明

l 复杂需求(比如项目指标),需要团队至少两人以上评审需求后开发。

提交上线申请的同事需要备注上需求逻辑说明。

l 审核上线人员为“轮值”,审核上线人员需要review开发人员的代码,需要和开发人员共同承担代码质量

2、事中监控数据质量

指标开发完成后,需要对指标的波动情况进行监控,发现波动较大的进行核查,指标波动范围需要具体业务具体制定,需要业务人员协助确认。常用的数据质量监控方法如下:

1)校验每天的记录数

分析师遇到的最常见数据异常是其报告的输出突然降至0。我们通常会发现最后的罪魁祸首是当天没有将新记录添加到相应的表中。一种简单的检查方法是确保每天一个表中的新记录数>0。

2)NULL和0值校验

分析师常遇到的第二个问题是NULL或0值。我们要保证每天增量数据中的NULL或0值不能超过新增数据的99%。要检查这一点,只需将一个循环脚本设置为每天用NULL或0计数一个表中的新记录数。如果看到记录数急剧增加,则可能存在转换错误或源业务系统就存在异常。

3)每天新增的记录数波动范围

某一天你发现数据量出现大幅增长或下降,而规则1和2都已校验通过。这种波动可能是正常的,比如电商行业某天的大促活动,或者社交软件的营销活动。但是也可能这就是异常的,是因为从源系统抽取了重复的记录。所以针对此种情况,我们也要制定数据质量规则,检查这些波动何时发生,并主动进行诊断。比如自动执行的一个简单的SQL过程,每天检查COUNT个新记录是否在7天跟踪平均值的误差范围内。阈值和误差范围可能因公司和产品而异,经验值一般是加减25%。当然,你可也可以直接和前一天的数据对比,增量不超过前一天的1倍。

4)重复记录数据校验

不管是电商系统或者是社交系统或者是物联网设备上报的数据,正常情况下都不会出现两条完全一样的记录(包括ID,时间,值都一样)。笔者曾遇到一个终端上报的两条数据完全一样的场景,导致我在做时间分段时候,划分不正确。所以,对数据值唯一性校验是有必要的。

5)数据时间校验

  一般我们业务系统的数据都是带有时间戳的,这个时间戳肯定比当前的时间要小。但是由于采集数据设备异常(业务系统异常),我们会碰到“未来时间”的数据,那如果我们以时间作为分区,后期可能就会出现异常的分析结果。当然,如果你的公司业务是跨国的,你需要考虑时差因素。

3、事后分析和问题跟踪

    每周定时跑一次程序,对全局数据进行质量稽核控制,如唯一性,非空性等对于程序跑出来的数据:数据质量概览在数据质量管理系统查询数据质量明细数据在数据质量管理系统查询根据异常数据统计出来的各种数据质量报表也可以在数据质量管理系统查询,包括表覆盖率,历史趋势,综合分析,排名分析等(质量报告支持导出为word,pdf,excel)对异常进行评估、严重程度、影响范围、问题分类等可以订阅自己比较关心的主题,表或者规则,邮件只会发送订阅内容对于打分比较低的表或者业务,可以反推业务方进行整改

六.最后总结一下

     要想真正解决数据质量问题,就要明确业务需求并从需求开始控制数据质量,并建立数据质量管理机制。从业务出发做问题定义,由工具自动、及时发现问题,明确问题责任人,通过邮件、短信等方式进行通知,保证问题及时通知到责任人。跟踪问题整改进度,保证数据质量问题全过程的管理。

继续滑动看下一个
涤生大数据
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存