pb利用datawindow查询符合条件的数据并且过滤掉其他数据_数据质量监测

e2bd5edfdd190653c7aceb0fe989576b.png

1 Overview

1.1 数据质量

在数据部门里,数据质量问题经常是被动发现,所以数据质量的问题是大多数公司数据部门都不得不面对的问题。数据质量校验的目标是监控数据管道中,生产者、处理阶段以及消费者的数据的正确性、一致性和及时性的一项系统工程。数据质量需要对数据进行校验,当产生严重的数据污染等事件的时候需要告警和阻塞数据处理链路,最大限度的减少由于上下游数据质量而产生的问题。

1.2 一些术语

  1. DQ: Data Quality
  2. 强规则: 符合一定条件会阻塞任务的规则
  3. 弱规则: 即使符合条件也不会阻塞任务
  4. 阈值: 监测的数据质量范围
  5. 表的平均波动率:一段时间内每日环比的均值
  6. 表的平均记录数:记录数的每日均值
  7. 表的平均报警数:报警数的每日均值
  8. 最近30天的最大波动率:max(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值|,|(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)
  9. 最近30天的最小波动率: min(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值|,|(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)

......(待补充)

2 监控手段

监控手段主要包括两个方面,一是监,数据质量校验,二是控,告警和处理。

2.1 数据质量校验

根据数据质量校验的对象,可以分为两种形式:

  1. 离线检查 - 可以指离线的对一些数据集 DataSet 进行检查
  2. 实时检查 - 数据处理流的检查

数据质量监控规则包括可以有多种形式:

  1. 主键监控
  2. 表数据量及波动监控
  3. 重要字段的非空监控
  4. 重要枚举字段的离散值监控、指标值波动监控
  5. 业务规则监控

根据校验范围,还可以分成两种形式:

  1. 抽样检查 - 效率高,资源消耗不大
  2. 全量检查 - 效率低,全覆盖,资源消耗大

2.2 告警和处理

告警和处理分为两个阶段,一是告警,当数据质量出现问题的时候,需要及时通知责任人,二是处理,出现上游数据污染,根据规则级别,需要及时阻塞下游任务,并处理上游任务。

3 实现方案的初想

3.1 离线检测

关于离线检查,最典型的场景应该有两个,一是0行检测,二是阈值检测。

0行检测可以理解成一些表不应该存在0行的情况,如果有,需要及时告警和排查原因,甚至是0行数据会影响下游任务,需要考虑阻断下游任务的继续执行,一方面减少下游任务异常的多余告警,二来节省下游任务执行的资源。

对于 Hive 来说,Hive Metastore 的查询,利用 HiveMetaStoreClient,定时获取各表的行数,可以作为离线监测的基础,又或者是利用 Hive Hook 来收集行数等信息。检查0行是相对简单的,只要一条 sql 就可以。这个可以作为一个定时的离线任务,定时执行,甚至是作为整个任务流 DAG 中的中间表任务生产后自动触发检查。

select a.TBL_ID, a.TBL_NAME, b.PARAM_KEY, b.PARAM_VALUE from TBLS as a join TABLE_PARAMS as b where a.TBL_ID = b.TBL_ID and TBL_NAME="call_center" and PARAM_KEY="numRows";+--------+-------------+-----------+-------------+
| TBL_ID | TBL_NAME    | PARAM_KEY | PARAM_VALUE |
+--------+-------------+-----------+-------------+
|    134 | call_center | numRows   | 60          |
+--------+-------------+-----------+-------------+

阈值检查的实现也非常容易,如果有离线/实时计算的平台,可以提供一些类 sql 的语法,同样是作为离线的定时任务来执行检查。当然阈值检查必须考虑检查范围的问题,抽样肯定要比全量更效率更高,但是全量肯定比抽样更稳妥,需要结合资源和业务来综合衡量。

-- 设置检查范围
set checkMode = SAMPLING;
-- 阈值检查
select a from A where a > 100;

3.2 实时检查

数据采集结果数据接入之后,数据存在于 Kafka 中,如何实现动态流式的数据质量检查呢?

需要明确一些具体的监测指标,比如 Kafka 消息中包含了不符合业务方定义的消息 schema,具体来看就是 key,需要告警并且在处理的时候过滤掉对应的 key;又或者是某些 key 的 value 小于预期的阈值,该条消息也需要屏蔽,以防止数据污染(屏蔽来不要紧,因为消息是有备份的,屏蔽只会影响下游程序)。

Flink 消费 Kafka 数据的时候,需要 FlinkKafkaConsumerxx,其中需要一个参数是针对接收到的每一条消息,key/value解序列化器,用于将字节数组形式的Kafka消息解序列化回对象,那么通过将规则实现在这里,并且通过 filter 语义来过滤,是可以实现实时的数据质量检测的,一旦遇到不符合消息 schema 的 key,又或者是不符合阈值条件的 value,那么就需要对这条消息进行处理。

可能存在的问题:

  1. 增加来每条消息处理的成本,处理的速度和吞吐量可能会是问题
  2. Flink 版本升级的时候需要重新定制 Consumer

4 一些想法

  1. 有些规则,像字段阈值,表行数这些,其实也算一种元数据,是否可以纳入到元数据管理里面呢
  2. 数据质量平台构建起来繁琐且对接上下游业务系统较多,为了快速落地,想先做离线检查,从最简单的0行检测和阈值检测做起
  3. 在数据同步过程中不进行清洗,避免影响同步效率,在数据进入 ODS 层之后进行清洗
  4. 为了可以进行动态观察,长期观察,数据质量平台必须有检测目标和检测结果的可视化
  5. 个人觉得 sql 的表达能力应该可以覆盖数据质量检测的大部分场景

5 参考系统

  1. DQC(阿里云)
  2. DataMan(美团)
  3. Apache Griffin

6 Reference

  1. http://www.6aiq.com/article/1545230321843?p=1&m=0
  2. https://www.ctolib.com/topics-121591.html
  3. https://blog.csdn.net/zhaodedong/article/details/73385667

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

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

相关文章

PadLeft函数

string num12num.PadLeft(4, 0); //结果为为 0012 看字符串长度是否满足4位,不满足则在字符串左边以"0"补足 转载于:https://www.cnblogs.com/shy1766IT/p/5184937.html

将解决方案和项目放在同一目录中_借助卡第那思3D电子目录,巴鲁夫使用CAE数据扩展其产品目录...

巴鲁夫作为一家中型企业,1921年成立于毗邻斯图加特市的诺伊豪森,80年代初期直至后来很长的一段时间内,巴鲁夫是巴西第一家及唯一一家从事自主生产的传感器制造商。如今巴鲁夫不再仅仅位于诺伊豪森,而是遍布欧洲、亚洲、北美、南美…

c语言math函数 sgn,常用矩阵计算C语言代码

参考资料:行列式:http://zh.wikipedia.org/wiki/行列式#.E4.BB.A3.E6.95.B0.E4.BD.99.E5.AD.90.E5.BC.8F伴随矩阵:http://zh.wikipedia.org/wiki/伴随矩阵余因子矩阵:http://zh.wikipedia.org/wiki/余因子矩阵逆矩阵:h…

pip: The ultimate package manager for Python

安装Package pip install <package name>列出已安装的Package pip list查看已安装的Package的详细信息 pip show <package name>搜索PyPi上的Package pip search <keyword>卸载已安装的Package pip uninstall <package name>转载于:https://www.cnblog…

python调用mysql数据库sql语句过长有问题吗_python连接MYSQL数据库,调用update语句后无法更新数据,解决...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"云数据库SQL Server&#xff0c;具有企业许可…

c语言结构体出现乱码,结构体数组输出时出现了乱码情况 求大神帮帮看程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#define N 3struct Student{int num;char name[20];int count;}; int useful_poll0;int useless_poll0;int total_poll0;int main(){void input(struct Student stu[]);void print(struct Student stu[]);struct S…

动态创建对象

C#主要支持 5 种动态创建对象的方式&#xff1a;   1. Type.InvokeMember   2. ContructorInfo.Invoke   3. Activator.CreateInstance(Type)   4. Activator.CreateInstance(assemblyName, typeName)   5. Assembly.CreateInstance(typeName)  最快的是方式 3 &…

python公式如何编写_如何编写 Python 程序,资深Python大咖教你玩转Python

如何编写Python程序&#xff0c;这从来就不是一件很难的事。下面我教你保存和运行 Python 程序的标准步骤&#xff0c;如下&#xff1a;对于 PyCharm 用户1. 打开 PyCharm。2. 以给定的文件名创建新文件。3. 输入案例中给出的代码。4. 右键并运行当前文件。注意&#xff1a;每当…

c语言学籍管理系统小程序,学籍业务办理系统(开源 v2.0发布 优化代码,增加小程序端)...

更新说明&#xff1a;1、此2.0版&#xff0c;大幅度优化代码&#xff0c;增加小程序端方便使用2、v1.0测试地址已关&#xff0c;请勿测试学生在校期间避免不了要和各种证明打交道&#xff0c;比如学籍证明、转专业申请、休学申请、退学申请等等。此类业务一般流程都是学生去找老…

Android 下的EXIF

一.什么是Exif Exif(Exchangeable Image File 可交换图像文件)是一种图象文件格式&#xff0c;它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息&#xff0c;包括拍 摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件…

hill密码源代码c语言,古典密码(Hill加密算法)(示例代码)

“Hill的加密与解密”Hill加密是另一种多字母代替密码&#xff0c;与多表代替密码不同的是&#xff0c;Hill密码要求将明文分成同等规模的若干个分组(最后一个分组涉及到填充)&#xff0c;每一个分组被整体的加密代换&#xff0c;即希尔密码属于分组加密。Hill密码的算法思想是…

python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理能力.jpg)...

为了在家安心学习&#xff0c;我决定写一段代码播放上课的铃声。之前中学时就希望有一个这样的软件&#xff0c;周末就可以高效学习了。但是网上搜不到相关软件&#xff0c;当时也不会写代码&#xff0c;就用闹钟来代替了。现在自己写一个试试。原本我是用C写的&#xff0c;但后…

那些地方会用C语言多线程,如何用C语言实现多线程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Windows操作系统&#xff0c;C语言实现多线程&#xff1a;#include #include DWORD APIENTRY ThreadOne ( LPVOID threadArg ){printf ( "线程开始啦&#xff0c;参数是&#xff1a;%s\n" , (char *)threadArg );return …

AWK高级编程 转载

AWK高级编程 转载 转载自&#xff1a;http://blog.csdn.net/wzhwho/article/details/5513791 1. 程序元素 一个awk 程序是一对以模式(pattern) 与大括号框起来的操作(action) 组合而成的&#xff0c;或许&#xff0c;还会加上实现操作细节的函数(function ) 。针对每个匹配于输…

tensor判断是否相等_PyTorch的Tensor(中)

背景在PyTorch的Tensor系列上一篇文章中&#xff1a;Gemfield&#xff1a;PyTorch的Tensor&#xff08;上&#xff09;​zhuanlan.zhihu.comGemfield介绍了一个Tensor的创建过程&#xff0c;特别是在创建一个Tensor的时候&#xff0c;调用栈从Python到C再回到Python的过程。与此…

c语言字符串未初始化strcat,C语言中字符串常用函数strcat与strcpy的用法介绍

strcpy原型声明&#xff1a;extern char *strcpy(char* dest, const char *src);头文件&#xff1a;#include 功能&#xff1a;把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明&#xff1a;src和dest所指内存区域不可以重叠且dest必须有足够的空间来容…

charles抓包工具使用指南

前言移动APP抓包PC端抓包查看模式其他功能问题汇总1、 前言&#xff1a; Charles是一款抓包修改工具&#xff0c;相比起burp&#xff0c;charles具有界面简单直观&#xff0c;易于上手&#xff0c;数据请求控制容易&#xff0c;修改简单&#xff0c;抓取数据的开始暂停方便等等…

android电视打印信息解析,关于液晶电视打印信息

原来是波特率的原因。。换了个波特率显示正常了&#xff0c;下面这个是红灯亮不开机的酷开k2打印信息&#xff0c;有老师能解释一下怎么看吗JHello world!{m3a} svn-r(Apr 2 2015 19:53:30)init_hwsetting_cpre_hwsetting_cpost_hwsetting_cparse hw setting DONE!internal ro…

bzoj1269 文本编辑器 splay

直接搞棵splay就行了&#xff0c;不要把光标弄到树中而是把光标当成询问或操作区间的端点标志这样会简单很多。 7点40分写到9点20分&#xff0c;包括调试总共花了一个小时40分钟&#xff0c;这次是自己独立调出来的&#xff0c;总算对splay有一定的了解。 设计操作&#xff1a;…

sap bom递归_SAP软件之化工行业特点01

作者&#xff1a;阿long声明&#xff1a;本文章仅用于SAP软件的应用、学习沟通&#xff0c;不代表SAP公司&#xff1b;文中所示截图来源SAP软件&#xff0c;相应著作权归SAP所有。SPA中关于制造的几种介绍2020.06.29简单的说&#xff0c;制造业中&#xff0c;生产管理是企业的组…