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

news2025/1/18 17:13:01

一.数据质量管理背景

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

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

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

二.数据质量管理定义

    数据质量管理(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)对异常进行评估、严重程度、影响范围、问题分类等可以订阅自己比较关心的主题,表或者规则,邮件只会发送订阅内容对于打分比较低的表或者业务,可以反推业务方进行整改

六.最后总结一下

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/44420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.1.3 运算放大器的参数以及选型、静态、交流技术指标

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

基于小脑模型神经网络轨迹跟踪matlab程序

1 CMAC概述 小脑模型神经网络(Cerebellar Model Articulation Controller,CMAC)是一种表达复杂非线性函数的表格查询型自适应神经网络,该网络可通过学习算法改变表格的内容,具有信息分类 存储的能力。 CMAC把系统的输入状态作为一个指针,把相…

Oracle-Autoupgrade方式升级19c

前言: Autoupgrade是Oracle 推出的自动升级工具,通过该工具可以将数据库升级为Oracle12.2之后的版本,工具支持升级前的检查、升级问题修复、一键式自动升级以及升级后的问题修复,极大的简化数据库的升级步骤。 支持的目标升级版本: Oracle D…

用 Java 实现爬虫 (爬取本地html中的人物信息并可视化人物关系)

目录 爬虫简介 常用的工具框架 selenium Jsoup Jsoup介绍 Jsoup的主要功能如下: HTML 相关知识 通过Jsoup元素获取 案例 爬取本地html中的角色信息 HtmlParseUtil 可以利用relation-graph 将人物关系可视化 使用爬虫要注意 查看网站的爬虫协议 爬虫简介…

面试:ANR原因及排查

ANR原因 1、CPU满负荷,I/O阻塞 2、内存不足,系统分配给一个应用的内存是有上限的,长期处于内存紧张,会导致频繁内存交换,进而导致应用的一些操作超时。自己内存泄漏或者其他应用占用的大量内存 3、四大组件ANR 4、…

字符串压缩(一)之ZSTD

一、zstd压缩与解压 ZSTD_compress属于ZSTD的Simple API范畴,只有压缩级别可以设置。 ZSTD_compress函数原型如下: size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcSize, int compressionLevel) ZSTD_decompress函数原…

Mysql replace into

CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,age int(11) DEFAULT NULL,msg varchar(10) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY uniq_age (age) ) ENGINEInnoDB DEFAULT CHARSETutf8;insert into t (age, msg) values (1,aaa),(2,bbb),(3,ccc);id 为自增主键、ag…

「重学JS」你真的懂数据类型吗?

前言 学习了这么久前端,发现自己对于基础知识的掌握并没有那么通透,于是打算重新学一遍JS,引用经济学的一句话:JS基础决定能力高度🤦🏻 基础很重要,只有基础好才会很少出 bug,大多数…

aws cloudformation 理解常见资源的部署和使用

参考 cfn101-workshopaws cli cloudformation cloudformation是aws的iac工具,以下简称cfn 环境搭建——cfn命令行工具 创建堆栈 aws cloudformation create-stack --stack-name testtemp \--template-body file://testtemp.yaml# --parameters ParameterKeyKey…

二叉树的循环问题

目录 一、二叉树的完全性检验 二、前序遍历的非递归写法 三、中序遍历的非递归写法 四、后序遍历的非递归写法 一、二叉树的完全性检验 给定一个二叉树的 root ,确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中,除了最后一个关卡外&#xff0c…

Vue脚手架

脚手架 安装步骤 全局安装vue/cli npm install -g vue/cli 安装之后使用不了vue的命令,查看nodejs文件发现我把vue装在了node_globalnpm这个文件夹中。 解决方法:新增一条path指向该文件夹 切换到你要创建的目录创建脚手架 vue create 项目名称 根据…

[附源码]Python计算机毕业设计Django保护濒危动物公益网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Hack The Box】linux练习-- Talkative

HTB 学习笔记 【Hack The Box】linux练习-- Talkative 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 &#x…

初始数据结构

目录 1. 集合的框架 集合框架的重要性 数据结构的介绍 算法的介绍 容器背后对应的数据结构 2. 时间复杂度和空间复杂度 算法效率 时间复杂度 时间复杂度的概念 大O的渐进表示法 常见的时间复杂度的计算 空间复杂度 空间复杂度的概念 从本章开始又要开始新的篇章&a…

[附源码]Python计算机毕业设计Django班级事务管理论文2022

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

k8s上部署Harbor通过Nginx-Ingress域名访问

目录 1、k8s集群环境,通过kubesphere安装部署。 1.1 集群基本信息 1.2 集群节点信息 2、安装Harbor 2.1、使用Helm添加Harbor仓库 2.2 、通过openssl生成证书 2.3、 创建secret 2.4、 创建nfs存储目录 2.5、 创建pv 2.6、创建pvc 2.7、values.yaml配置文件 2.…

3-UI自动化-八大元素定位,xpath定位方式和相关的常问面试题

3-UI自动化-八大元素定位,xpath定位方式和相关的常问面试题八大元素定位八大元素定位的使用通过xpath定位xpath语法1. xpath逻辑运算定位2. 层级条件定位3. 索引定位4. 文本定位text()WebElement对象WebElement对象常用属性WebElement对象常用方法find_element()和 …

【Mybatis编程:插入和根据id删除相册数据】

目录 1. Mybatis编程&#xff1a;插入相册数据 2. Mybatis编程&#xff1a;根据id删除相册数据 1. Mybatis编程&#xff1a;插入相册数据 当某个数据表中的id被设计为“自动编号”的&#xff08;auto_increment&#xff09;&#xff0c;在配置<insert>标签时&#xff0…

开心公寓房屋出租管理系统的设计与实现(系统源码+技术文档+论文)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

基于51单片机病房呼叫系统(64位病床)

资料编号&#xff1a;189 下面是仿真演示&#xff1a; 189-基于51单片机病房呼叫系统&#xff08;64位病床&#xff09;&#xff08;仿真源程序原理图全套资料&#xff09;功能介绍&#xff1a; 设计一个可容64张床位的比那个房呼叫系统。 1、每个床位都有一个按钮&#xf…