(学习笔记)数据基建-数据质量
数据基建-数据质量
- 数据质量
- 数据质量保障措施
- 如何推动上下游开展数据质量活动
- 数据质量保障如何量化产出
- 数据质量思考
- 全链路数据质量保障项目
数据质量
概念:数据质量,意如其名,就是数据的准确性,他是数据仓库的基石,控制好数据质量,是做数据仓库基本要求,也使得下游业务方对数据用的放心
痛点:
 数据问题该如何上报修复,缺少流程化。
 数据链路缺少卡点保障。
 数据不能及时产出影响到下游用数。
 用户无感知,除了发现的数据问题,隐藏的数据问题仍存在。
疑问:
 很多人会有一种想法,做了这么久的数仓为什么还存在质量问题?
数据质量保障措施
数据质量保障措施-全流程卡点总览
 
上线/变更规范
 模型上线/变更流程
模型上线:设计模型–>组内模型评审–>代码编写–>提交运行(dev环境)–>代码审核数据校验(数据校验时需要给审核人提供数据比对结果)–>配置DQC–>数据初始化(线上环境)
模型变更(例如加字段):确定需求(了解需求背景)–>代码编写–>提交运行(dev环境)–>代码审核&数据校验(数据校验时需要给审核人提供数据比对结果)–>配置DQC(可省略,或添加业务dqc)–>数据初始化(线上环境)
指标变更:如果发现字段变更后对下游自己的表/报表产生影响,那自己负责修改代码并让其他同学进行代码审核、数据质量审核且任务运行成功后方可发布线上。如果下游血缘存在不是自己的表/报表,需要在相关业务群里说一下/找到下游表owner/报表owner发送通知,让下游owner进行修改,如联系不上需要向owner的leader说明问题,并且让下游表/报表的owner当天回复一下受不受影响,不回复则对方承担问题责任,如果对方不接受修改方案,需要双方约定一下修改内容、修改日期,重定方案
代码检验工具
 平台化
 手动验证(sql查询记录)
 开源项目
数据质量监控(dqc)
 DQC概念:dqc全称Data Quality Center,中文又称数据质量监控,用于监控表/字段数据的质量,防止问题数据流入下游任务,是数据仓库强有力的保障卡点,dqc触发于每个任务执行后
DQC平台展示
 
DQC种类
 强规则可以中断任务的进行,将任务置于失败,并对任务负责人及值班人发送任务失败的消息(消息包括电话、邮件、短信、钉钉、飞书等)
 弱规则不能中断任务的进行,只对任务负责人及值班人发送任务失败的消息(消息包括电话、邮件、短信、钉钉、飞书等)
DQC划分
 基础dqc(每个表必加):
 主键唯一:联合主键、单主键
 主键不为空
 表行数波动
 表不为空
业务dqc:
 文本类:
 字段不为空或空串
 json中key不为空
 字段是香脱敏
数值:
 数值在区间范围
 字段不能为0
枚举值
 枚举值类型是香正常
 枚举值波动
 枚举值占比
日期
 字段不为空
 日期小于当天
数据基线及sla
 数据基线概念(数仓内部):数据基线是指数仓内部对数据产出严格把控标准,当数据产出较晚(可能任务报错、强dqc拦截等因素导致),会通知对应的值班人及任务负责人解决任务保障底层数据按时产出,在布置基线时会配置基线告警时间
sla概念(下游业务方):sla是指数仓与业务方约定好的数据产出时间,像是与业务方"签字画押",能够按时为下游提供数据,当数据产出较晚(可能任务报错、强dqc拦截等因素导致),会通知对应的值班人及任务负责人解决任务保障底层数据按时产出,在布置基线时会配置基线告警时间
基线sla平台
 
基线sla等级
 例如L1-L4,等级越低,基线分配资源越多
容灾备份快恢能力
 痛点:核心任务产出不及时,以及值班同学及任务负责人夜间未起来,无法保障数据及时交付下游
 解决办法:通常给下游临时任务切换为t-2数据,恢复整体任务进行,但数据资产、数据应用模型较多不能顾全还容易出现误操作情况,所以需要容灾备份任务还原所有数据资产,保障sla补破线能够及时交付
数据问题上报
 痛点:下游缺少反馈数据问题渠道,也不清楚提出的问题是否解决,问题提出过于分散,需要平台管理整体流程
 数据问题上报平台:
 数据平台
 
 需求平台:通过管理数仓需求方式来管理数据上报问题,业务方通过工单方式上报问题到数据仓库同学,数据仓库同学跟进,并记录问题跟进情况,使得双方相互了解,从而完成数据问题统一管理,统一解决
数据质量长期监测跟踪体系(面向下游)
 痛点:数仓本身仍存在数据质量问题,解决了数据问题无法保障日后是否还出现此类数据问题产生,下游用户无法感知具体产生什么数据问题及问题具体明细
整体代码架构
 
 流程:
 1.现状梳理:对目前现有数据问题,存在隐患的问题进行收集归类,制作规则维表
 2规则构建:将目前存在的数据问题按照每个规则进行模块化规则配置,为每个规则配置规则内容,包括规则类型、规则id/名、以及存在问题的字段/表等
 3数据开发:建设相应dwd数据模型进行明细数据存放,并做维度退化,可按照规则种类开设二级业务域(模型为二级分区,分区1为ds(业务日期),分区2为rule (规则)),内容包括规则id规则名称,监控字段1-5,来源表,规则是否触发,规则是否加白,规则上线/变更/下线日期,规则状态,负责人等等
 4数据应用:将数据明细插入最终报表数据模型中,最后通过报表的数据汇总呈现
数据质量监测门户
 
 可与前端配合完成,或者低代码平台,或者数据可视化平台搭建
如何推动上下游开展数据质量活动
初期
 早期未做平台时候,可以通过组建数据问题答疑大群方式,与业务方进行沟通,明确业务方数据问题痛点,同时也能解决群里业务方提出的问题,其次与下游交流明确产出保障,打好基础
成熟期
 当平台完善后,要经常开设培训讲座,带着下游了解数据质量体系,明自该如何按照流程进行数据问题上报,解决,验收,保障大家维护同一个规则,其次要适当给予下游奖励,例如每月一次统计数据问题提出贡献及数据问题解决个数、程度,并通过这些考核为下游提供奖励,让下游有了参与感
数据质量保障如何量化产出
产出统计数据模型
 问题发生数/率
 问题解决数/率
 问题复发数/率
周/月报告
 数据问题趋势
 数据问题分类
 本期解决数
 本期新增数
 重点问题解决数
 数据问题贡献榜
数据质量思考
全链路数据保障是整个数据仓库中的核心,好的数据质量基建要从需求分析->开发->提交/发布->应用,每一个流程都有相应的数据质量保障卡点,保障流程中每一步都不可缺失,如果大家都能遵守流程中每一步去执行,能降低线上问题产生频率,提升下游整体用数信心
全链路数据质量保障项目
相关文章:
 
(学习笔记)数据基建-数据质量
数据基建-数据质量 数据质量数据质量保障措施如何推动上下游开展数据质量活动数据质量保障如何量化产出数据质量思考全链路数据质量保障项目 数据质量 概念:数据质量,意如其名,就是数据的准确性,他是数据仓库的基石,控…...
 
WINUI——Behavior(行为)小结
前言 在使用MVVM进行WINUI或WPF开发时,Command在某些时候并不能满足逻辑与UI分离的要求。这时肯定就需要其它技术的支持,Behavior就是一种。在WPF中是有Behavior直接支持的,转到WINUI后,相对有一些麻烦,于是在此记录之…...
 
Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类
若依框架(RuoYi)中的Translation翻译类主要作用在于实现字段值的转换或翻译功能,以提高数据展示的准确性和友好性。以下是其具体作用的一些关键点: 字段值转换:若依框架在处理数据时,有时需要将某些字段的…...
类加载的奥秘
一、类的加载过程将类的字节码文件加载到Java虚拟机中进行执行。 1.通过一个类的全限定名来获取定义此类的二进制流字节码文件(如zip 包、网络、运算生成、JSP 生成、数据库读取等)。 2.将这个字节流所代表的静态存储结构(如常量池、字段、方法等)转化为…...
Spring知识点总结
1. 简介一下Spring框架。 答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。 2. Spring框架有哪些优点?谈谈你的看法。 答ÿ…...
 
STM32Cube系列教程11:STM32 AES加解密模块性能测试
文章目录 本次测试环境本次测试所使用的系统时钟为48MHz本次测试主要测试对大量数据进行加解密所需的时间,本次为不严谨测试,忽略了程序调用耗时,结果仅供参考。 AES算法与数据加解密加密与解密对称加解密AES算法AES-ECBAES-CBC 填充算法PKCS…...
 
Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。
.sync的作用: 可以实现子组件与父组件数据的双向绑定,简化代码。 与v-model的不同点,prop属性名可以自定义,不要一定要用value. .sync的本质: 就是:属性名和update:属性名合写。 下面我们进行代码演示…...
 
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注  目录 一、引言 🎄队列的概念 🎄为什么要用单链表实现队列 二、单…...
 
DHCP服务
文章目录 一、DHCP介绍二、DHCP应用场景三、DHCP工作原理3.1)工作方式3.2)工作原理解析3.3)计算机获得IP的时间点3.4)租约更新阶段 四、DHCP服务器部署4.1)DHCP安装4.2)DHCP配置文件详解4.3)DHCP启动 五、D…...
 
C++笔试-剑指offer
剑指offer 文章目录 剑指offer数组[数组中重复的数据 ](https://leetcode.cn/problems/find-all-duplicates-in-an-array/description/)将元素交换到对应的位置 二维数组中的查找二叉搜索树 旋转数组的最小数字二分查找 数组中出现次数超过一半的数字相互抵消 连续子数组的最大…...
 
Mac安装jadx并配置环境
jadx官网:GitHub - skylot/jadx: Dex to Java decompiler 第一种: 安装jadx命令: brew install jadx 启动jadx-gui命令: jadx-gui 可能遇到的问题: Downloading https://formulae.brew.sh/api/formula.jws.json** h…...
前端学习----css基础语法
CSS概述 CAscading Style Sheets(级联样式表) CSS是一种样式语言,用于对HTML文档控制外观,自定义布局等,例如字体,颜色,边距等 可将页面的内容与表现形式分离,页面内容存放在HTML文档中,而用于定义表现形式的CSS在一个.css文件中或HTML文档的某一部分 HTML与CSS的关系 HTM…...
 
超详解——python条件和循环——小白篇
目录 1. 缩进和悬挂else 2. 条件表达式 3. 和循环搭配的else 4. 可调用对象 总结: 1. 缩进和悬挂else 在Python中,代码块是通过缩进来表示的。条件判断和循环结构的代码块需要正确缩进。悬挂else指的是else子句和相应的if或循环在同一级别的缩进。 …...
 
DNS协议 | NAT技术 | 代理服务器
目录 一、DNS协议 1、DNS背景 2、DNS协议 域名 域名解析 二、NAT技术 1、NAT技术 2、NAPT技术 3、NAT技术的缺陷 三、代理服务器 1、正向代理服务器 2、反向代理服务器 一、DNS协议 域名系统(Domain Name System,缩写:DNS&#…...
 
深入ES6:解锁 JavaScript 类与继承的高级玩法
个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 💯Class🍟1 类的由来🍟2 co…...
领域驱动设计:异常处理
一、异常的处理 异常处理是领域模型要考虑的一部分,原因在于模型的责任不可能无限大。在遇到自己处理能力之外的情况时,要采用异常机制报告错误,并将处理权转交。异常就是这样一种机制,某种程度上,它可以保证领域模型…...
 
网络网络层之(6)ICMPv6协议
网络网络层之(6)ICMPv6协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…...
 
《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。
《大道平渊》 拾壹 "大家都在喝,你喝不喝?" 商业一定是个故事,人民群众需要故事。 比如可口可乐的各种故事。 可口可乐公司也只是被营销大师们, 作为一种故事载体,发挥他们的本领。 营销大师们开发故事…...
JavaScript 如何访问本地文件夹
在浏览器环境中的JavaScript(通常指的是前端JavaScript)由于安全限制,无法直接访问用户的本地文件或文件夹。这是为了防止恶意脚本访问并窃取用户的敏感数据。 但是,有几种方法可以间接地让用户选择并访问本地文件: 使…...
ArrayList顺序表简单实现
一、创建MyArrayList框架 1.1 MyArrayList 类中实现 arr 数组 import java.util.Arrays;public class MyArrayList {private int[] arr;private int usesize;private static final int P 10;public MyArrayList() {arr new int[P];} 在 MyArrayList 类内创建 arr 数组&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
 
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
 
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
 
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
 
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
 
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
 
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
 
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
