当前位置: 首页 > news >正文

数据质量怎么监控

目录

一、任务基线级别

二、任务级别 & 表级别

三、字段级别

1. 对指标字段的监控

2. 对维度字段的监控

四、报表级别监控

五、总结


跑了几场面试,数据质量怎么监控是经常被问到的问题,仅次于自我介绍。
因为数据行业发展了几年,数仓大体都建设成型了,数仓建设的方法论大家总结的也都差不多了,现在大家都开始关心数据质量。
在大家心目中,一个合格的数仓要能产出及时、准确的数据,且对数据的质量有自检的过程,做到没问题,或先于别人发现问题
所以数据质量监控是数仓建设的一个重要部分。
之前的工作中,我总结了一套数据质量监控方法论,在这记一下。
监控分为多个层次,从大到小说。

一、任务基线级别


凡是数仓ETL任务,都有上游和下游,就像B表必须依赖于A表产出,C表又依赖于B表产出。
所有的任务,按上下游的关系组织起来,会形成一个有向无环图,举个例子如下图:

ETL任务图

假如E表非常重要(例如是线上服务表),需要对它进行基线级别的监控,把E表配置进基线监控任务后,E表的所有上游就都会进入基线的监控范围。
在上图中,
如果是E表配置基线,基线会同时监控根节点及ABCD表。
如果是D表配置基线,基线同时会监控根节点及AB表。

基线要监控什么呢主要分为两个方面,所有任务运行时长及结果任务产出时间
所有任务运行时长:假如A表每天的运行时长是1h,今天突然变成3h了,那么监控系统则会标志此 任务运行异常,会报警给基线负责人和任务负责人。
结果任务产出时间:如果和下游签订了SLA协议,规定E表每天7点前产出,那么如果E表今天6点30还没产出,基线直接预警给基线负责人和任务负责人,预警时间一般会比产出时间要提前一点,给检修任务留出时间。

二、任务级别 & 表级别


对于一个成熟的数仓来说,绝大多数情况下,表和ETL任务都是一一对应的。
上一点中,基线监控了一条任务流,监控强度是最大的,那么仅次于基线的就是单个任务的监控。
单个任务监控什么呢?主要三方面:任务运行时长、任务产出时间、表产出大小。
任务运行时长:某任务平时1h能运行完,今天突然变成3h,那么认为异常,告警给任务负责人。
任务产出时间:某任务平时7点产出,今天7点没产出,那么认为异常,告警给任务负责人。
表产出大小:某表平时每天产出大小1T,今天突然变成500G了,那么认为异常,告警给表负责人。

三、字段级别


任务定时产出,表大小也符合预期,那接下来,我们就要做更细致的监控了。
即字段级别的监控。
字段级别的监控一般通过DQC任务实现( DQC = Data Quality Center,数据质量中心),可监控的内容细致也琐碎,我把字段监控分为两种类型,对指标字段的监控和对维度字段的监控。

1. 对指标字段的监控


对于指标字段,我们一般关心它的均值、最大、最小、中位数等。
指标字段,我们关心它的波动程度,一般来说,会把今天的指标与昨天(日)、近7天的平均值(周)、近30天的平均值(月)做比较,看波动率,波动率超过某个阈值,则告警给DQC任务配置的人(因为配置任务的人最关心这个指标数据的质量)。

2. 对维度字段的监控


维度字段,我们监控三个方面:维度覆盖率、维度占比、维度下指标的波动。
维度覆盖率:例如性别字段,男女,预期覆盖率90%,如果某天数据低于90%,则预警给DQC任务配置的人。
维度占比:例如男女对应的记录条数占比,如果今天男性40%、女性50%、未知10%,以往男性占60%、女性占30%、未知占10%(以往可能是昨天、7天平均、30天平均等)我们有理由怀疑数据质量有问题,预警给DQC任务配置的人。
维度下指标的波动:例如某应用(如微信)男女的平均使用时长,同样可与昨天、7天平均、30天平均作对比,有问题预警给DQC任务配置的人。

四、报表级别监控


报表级别监控一般是把上述的某些监控内容可视化,并广播给项目组所有的人,让大家更直观地看到数据的变化。
报表监控一般用趋势图,陡升陡降在趋势图中会非常明显地看到。

五、总结


总结一下,列个表:


————————————————
版权声明:本文为CSDN博主「疯狂的土豆1652」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33310807/article/details/129016896

相关文章:

数据质量怎么监控

目录 一、任务基线级别 二、任务级别 & 表级别 三、字段级别 1. 对指标字段的监控 2. 对维度字段的监控 四、报表级别监控 五、总结 跑了几场面试,数据质量怎么监控是经常被问到的问题,仅次于自我介绍。 因为数据行业发展了几年,数…...

.NET Core 实现Excel的导入导出

.NET Core 使用NPOI实现Excel的导入导出前言NPOI简介一、安装相对应的程序包1.1、在 “管理NuGet程序包” 中的浏览搜索:“NPOI”二、新建Excel帮助类三、调用3.1、增加一个“keywords”模型类,用作导出3.2、添加一个控制器3.3、编写导入导出的控制器代码…...

排好队,一个一个来:宫本武藏教你学队列(附各种队列源码)

文章目录前言:理解“队列”的正确姿势一个关于队列的小思考——请求处理队列的两大“护法”————顺序队列和链式队列数组实现的队列链表实现的队列循环队列关于开篇,你明白了吗?最后说一句前言: 哈喽!欢迎来到黑洞晓…...

C语言--动态内存管理1

目录前言动态内存函数介绍mallocfreecallocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)对通讯…...

HTTPS 的工作原理

1、客户端发起 HTTPS 请求 这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。 2、服务端的配置 采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请&#xf…...

游戏开发中建议使用半兰伯特光照

游戏开发中建议使用半兰伯特光照模型 在基本光照模型中求出漫反射部分的计算公式: 漫反射 = 入射光线的颜色和强度(c light) * 材质漫反射系数 (m diffuse)* 表面法线(n) * 其光源防线 (I) 在shader中为了不让 n和i的点乘结果为负数,即使用了saturate函数让值截取在[0,1]区…...

JavaScript到底如何存储数据?

1.var的迷幻操作 普遍的观点:JavaScript中的基本数据类型是保存在栈空间,而引用数据类型则是保存在堆空间里, 是否正确? 浏览器环境下JavaScript变量类型的运行实践结果: var a 10;console.log(a);console.log(window.a); console.log(wind…...

python实战应用讲解-【numpy专题篇】numpy应用案例(一)(附python示例代码)

目录 用Python分析二手车的销售价格 用Python构建GUI应用的铅笔草图 需要的包 实现步骤 完整代码 用Python分析二手车的销售价格 如今,随着技术的进步,像机器学习等技术正在许多组织中得到大规模的应用。这些模型通常与一组预定义的数据点一起工作…...

网络割接项目

某企业准备采购2台华为设备取代思科旧款设备,针对下列问题作出解答。 (1)做设备替换的时候,如何尽可能保证业务稳定性,请给出解决方案。 a)对现网拓扑进行分析,分析现网拓扑的规划(链路类型、cost、互联IP、互联接口等信息)、分析现网流量模型(路由协议、数据流向特…...

SpringBoot整合数据可视化大屏使用

1 前言 DataV数据可视化是使用可视化应用的方式来分析并展示庞杂数据的产品。DataV旨让更多的人看到数据可视化的魅力,帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用,满足您会议展览、业务监控、风险预警、地理信息分析等多种业务的展示需求, 访问地址:h…...

蓝桥杯Web前端练习题-----水果拼盘

一、水果拼盘 介绍 目前 CSS3 中新增的 Flex 弹性布局已经成为前端页面布局的首选方案,本题可以使用 Flex 属性快速完成布局。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: ├── css │ └── style.…...

[攻城狮计划]如何优雅的在RA2E1上运行RT_Thread

文章目录[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread准备阶段🚗开发板🚗开发环境🚗下载BSP🚗编译烧录连接串口总结[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread 🚀🚀开启攻城狮的成长之旅&#xff0…...

1.linux操作命令

1. pwd -> 打印当前绝对工作路径。 2. ls -> 查看目录的文件名 ls -> 默认列出当前目录的全部文件名 ls . -> 列出当前目录的全部文件名(.代表当前目录) ls / -> 列出根目录下的全部文件命名 ls -a -> 列出当前目录下全部文件名(包括隐藏…...

STL--vector

vector 头文件 #include<vector>向量的定义&#xff1a; vector<int> vec&#xff1b;//定义一个vec型的向量a vector<int> vec(5); //定义一个初始大小为5的向量 vector<int> vec(5,1); //初始大小为5&#xff0c;值都为1的向量二维数组&#xff1…...

Java每日一练(20230324)

目录 1. 链表插入排序 &#x1f31f;&#x1f31f; 2. 最接近的三数之和 &#x1f31f;&#x1f31f; 3. 寻找旋转排序数组中的最小值 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…...

你掌握了吗?在PCB设计中,又快又准地放置元件

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。 组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足…...

springboot学生综合测评系统

031-springboot学生综合测评系统演示录像2022开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&…...

【Unity3D】法线贴图和凹凸映射

1 法线贴图原理 表面着色器中介绍了使用表面着色器进行法线贴图&#xff0c;实现简单快捷。本文将介绍使用顶点和片元着色器实现法线贴图和凹凸映射&#xff0c;实现更灵活。 本文完整代码资源见→法线贴图和凹凸映射。 1&#xff09;光照原理 Phong 光照模型和 Blinn Phong 光…...

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景 有时候&#xff0c;我们拿到需求&#xff0c;没仔细看当前分支是什么&#xff0c;就开始撸代码了。完成了需求或者写到一半发现开发错分支了。 比如此时新需求代码都在master分支上&#xff0c;提交必然是不可能的&#xff0c;所有修改还是要在新建分支上进行&#x…...

java多线程之线程安全(重点,难点)

线程安全1. 线程不安全的原因:1.1 抢占式执行1.2 多个线程修改同一个变量1.3 修改操作不是原子的锁(synchronized)1.一个锁对应一个锁对象.2.多个锁对应一个锁对象.2.多个锁对应多个锁对象.4. 找出代码错误5. 锁的另一种用法1.4 内存可见性解决内存可见性引发的线程安全问题(vo…...

WordPress靶场构建指南:从渗透测试流程到GetShell实战

1. 为什么这个靶场不是“玩具”&#xff0c;而是渗透测试能力的试金石WordPress靶场搭建这件事&#xff0c;圈内很多人第一反应是&#xff1a;“不就是下个DVWA或者bWAPP&#xff1f;点几下就完事。”但真正带过红队新人、做过甲方渗透评估的同行都清楚&#xff1a;一个能支撑从…...

CentOS 7下Nginx集成SM2国密证书的完整实践指南

1. 为什么SM2证书在CentOS 7上配Nginx不是“装个包就能用”的事&#xff1f;你刚接到一个政务系统对接需求&#xff0c;对方明确要求必须使用国密SM2证书&#xff0c;且服务器环境锁定为CentOS 7。你信心满满地打开终端&#xff0c;yum install nginx&#xff0c;再把SM2证书丢…...

STM32G4项目实战:巧用MCP2518FD实现多路CAN FD通信,附完整工程源码解析

STM32G4项目实战&#xff1a;巧用MCP2518FD实现多路CAN FD通信&#xff0c;附完整工程源码解析 在工业控制和车载网络领域&#xff0c;CAN FD总线因其更高的传输速率和更大的数据负载能力正逐步取代传统CAN总线。STM32G4系列微控制器内置3路FDCAN接口&#xff0c;但面对需要5路…...

超自动化巡检:破解运维人员短缺的利器

在数字化转型加速推进的今天&#xff0c;企业IT基础设施正经历着前所未有的指数级增长——物理服务器、虚拟机、容器集群、云原生环境、边缘节点……运维对象的数量与种类日新月异。然而&#xff0c;与之形成鲜明对比的是&#xff0c;运维团队的规模却难以等比扩充。招不到人、…...

hls::stream作为高层次设计中最总要的建模

template<typename __STREAM_T__> class stream{ protected://保护类型std::string _name;//hls::stream的命名&#xff0c;用于做标记使用std::deque<__STREAM_T__> _data;//队列public://对外接口stream(){//无参构造函数static unsigned _counter 1;std::strin…...

互联网大厂 Java 求职面试实战:音视频场景中的技术挑战

互联网大厂 Java 求职面试实战&#xff1a;音视频场景中的技术挑战在这个互联网飞速发展的时代&#xff0c;越来越多的求职者走进了大厂的面试现场。今天&#xff0c;我们将跟随一位搞笑的程序员燕双非&#xff0c;来看看他在面试中的表现&#xff0c;以及他如何应对各种技术问…...

零经验想投运营?3分钟AI生成高匹配简历,告别海投无效!

“我一个零经验小白&#xff0c;简历怎么写才能打动运营岗HR啊&#xff1f;&#xff01;&#xff01;” “海投了快100份简历&#xff0c;一个面试都没有&#xff0c;我是不是不适合运营&#xff1f;” 相信这是大部分想转行或者刚毕业&#xff0c;对运营岗有点心动但完全没经…...

软件测试职业天花板真相:不是岗位不行,是你没找对方向

在软件行业高速发展的今天&#xff0c;打开任何一个技术论坛&#xff0c;总能刷到软件测试从业者的焦虑&#xff1a;“干了5年功能测试&#xff0c;薪资卡在15k再也上不去”“35岁还在写测试用例&#xff0c;是不是要被淘汰了”“AI都能自动生成测试脚本了&#xff0c;我们还有…...

AI Agent架构选型实战指南:从行为复杂度到协作粒度

1. 这不是理论课&#xff0c;是我在真实项目里踩坑后画出的AI Agent架构地图你有没有过这种感觉&#xff1a;刚学完LangChain&#xff0c;信心满满想搭个“智能客服”&#xff0c;结果写到第三层条件分支就发现逻辑像毛线团——用户问“查订单”&#xff0c;系统要先判断是否登…...

Unity+C#开发万人MMO服务器的实战架构与同步优化

1. 这不是“写个服务器”那么简单&#xff1a;先撕开“万人在线”的真实含义很多人看到“UnityC#开发万人MMO服务器”这个标题&#xff0c;第一反应是&#xff1a;“哦&#xff0c;用Unity做客户端&#xff0c;C#写个后端&#xff0c;Socket连一连&#xff0c;再加个数据库&…...