极客星球| 数据质量保障之路的探索与实践

算法流光使
• 阅读 1105

极客星球| 数据质量保障之路的探索与实践

前言

数据从生产到应用,会经历5大环节,数万张数据表。面对不同产品线的复杂数据质量场景,数据质量平台如何满足多样的需求?
MobTech袤博科技作为一家拥有数据源到数据应用全链路数据处理能力及算力的科技智能公司,如何解决大数据场景下数据链路长、数据体量大、数据逻辑复杂等一系列痛点难题?本文将通过线下数据保障、线上数据保障、自动化测试3大环节来剖析各环节数据质量保障措施,帮助你在实际的工作中,探索和沉淀出可复制的0到1数据质量保障方法。

背景

数据即资产,有了数据+模型+算力,便有了持续将数据应用于业务场景的能力。而数万张库表是否每日按时生成、生成的数据字段是否完整、生成数据的逻辑是否正确、生成数据分布是否合理、生成数据是否一致都会影响业务使用,而这些便是数据质量的范畴。

数据从生产到应用,主要经历数据源、数据清洗、数据计算、数据中间件再到数据应用5大环节。用户直观感受的数据,都在数据应用层。前4个环节都是为了得出最后1层的数据结果。

极客星球| 数据质量保障之路的探索与实践

一、整体方案

极客星球| 数据质量保障之路的探索与实践

二、线下数据,如何保障?

数据生产前的数据验证,是保障数据质量的重要阶段,也是提前规避问题的主要环节。做好数据验证,数据验证包含数据梳理、数据测试、过程管理3个方面。

1.数据梳理

极客星球| 数据质量保障之路的探索与实践

2.数据测试

数据测试,主要包括功能需求理解、分析方案梳理、数据流向梳理、开发代码走查、数据表验证几个环节。以数据表验证为例,分别从以下维度验证:

极客星球| 数据质量保障之路的探索与实践
极客星球| 数据质量保障之路的探索与实践
极客星球| 数据质量保障之路的探索与实践

3.过程管理

主要包括数据测试指导规范、准入准出标准、Bug定级、提测模板、报告模板、知识库积累。

三、线上质量,如何保障?

1.数据监控

定级监控:系统定期清理库表,即使每日按规则清理后,总库表量也在数万以上。兼顾广度及深度,通过库表定级,按等级监控。

极客星球| 数据质量保障之路的探索与实践

极客星球| 数据质量保障之路的探索与实践
极客星球| 数据质量保障之路的探索与实践
极客星球| 数据质量保障之路的探索与实践

监控结果:

1)规则设定

按不同表及监控维度,添加监控指标。

极客星球| 数据质量保障之路的探索与实践

2)监控结果查看

收到告警,查看详情,分析告警内容。

极客星球| 数据质量保障之路的探索与实践

2.调度监控

从数据源到数据应用,就像是一条逐步细分的河流,而这一条条通道就像是调度系统中每日task。河流流速是否正常,分支是否阻塞。在生产过程中,可以通过调度告警来发现。核心调度识别,调度告警链路覆盖。

1)根据核心表和核心标签对应的表
2)梳理出核心调度
3)调度任务添加告警机制

四、自动化测试

自动化测试的目的是将复杂的内容,用工具简单化。将重复性高的事项,用工具自动化。按照不同的业务方向,将自动化分为以下6个模块。

1.数据迭代自动化测试

应用场景:当已有表的新逻辑上线前,需要从各个维度对比测试表数据和线上表数据,保证数据变动合理性。

2.数据EDA探索

应用场景:当有新需求提测时,可以通过智能自动化测试方式,快速知道一张表的具体情况,如字段空值率、数据唯一性等。

3.批量数据自动化测试

应用场景:在对多表执行其共有测试用例时使用,从而提升效率。

4.可视化报表

应用场景:针对具体业务需求,实现数据时间序列趋势图等,直观感受数据波动。

5.数据安全扫描

应用场景:每周定期扫描数万张库表,智能发现潜在安全隐患。

6.数据字段定级

应用场景:数十万字段等级评定。

五、总结

团队目前针对数万张库表定级,数千张库表监控、数千个指标监控覆盖。数万张库表定期安全扫描,数十万字段等级评定。但在整体数据质量保障中仍有提升空间待完成,如:

  • 监控维度,针对业务场景定制监控维度不够
  • 业务层面,需要和业务伙伴总结业务规则,增强业务层面验证
  • 自动化待平台化,数据验证平台一体化
  • 通用数据验证智能化,自动识别字段并生成自动化验证用例
  • 监控添加智能化,根据历史周期及字段,智能生成监控规则
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这