前言
数据从生产到应用,会经历5大环节,数万张数据表。面对不同产品线的复杂数据质量场景,数据质量平台如何满足多样的需求?
MobTech袤博科技作为一家拥有数据源到数据应用全链路数据处理能力及算力的科技智能公司,如何解决大数据场景下数据链路长、数据体量大、数据逻辑复杂等一系列痛点难题?本文将通过线下数据保障、线上数据保障、自动化测试3大环节来剖析各环节数据质量保障措施,帮助你在实际的工作中,探索和沉淀出可复制的0到1数据质量保障方法。
背景
数据即资产,有了数据+模型+算力,便有了持续将数据应用于业务场景的能力。而数万张库表是否每日按时生成、生成的数据字段是否完整、生成数据的逻辑是否正确、生成数据分布是否合理、生成数据是否一致都会影响业务使用,而这些便是数据质量的范畴。
数据从生产到应用,主要经历数据源、数据清洗、数据计算、数据中间件再到数据应用5大环节。用户直观感受的数据,都在数据应用层。前4个环节都是为了得出最后1层的数据结果。
一、整体方案
二、线下数据,如何保障?
数据生产前的数据验证,是保障数据质量的重要阶段,也是提前规避问题的主要环节。做好数据验证,数据验证包含数据梳理、数据测试、过程管理3个方面。
1.数据梳理
2.数据测试
数据测试,主要包括功能需求理解、分析方案梳理、数据流向梳理、开发代码走查、数据表验证几个环节。以数据表验证为例,分别从以下维度验证:
验证方向 |
验证内容 |
基本业务场景验证 |
这个功能的诉求,能够满足 |
数据结果预览 |
1. 生成可视化数据预览报告,查看报告内容,查看数据情况及基本分布 |
完整性 |
1. 数据量是否完整 2. 所需字段是否完整 3. 字段内容是否完整,空值率等 4. 枚举值完整 5. 与主数据联合验证,主数据中的内容是否都存在(例如主数据是门店,那么查看衍生表中,是否包含所有门店) 6. 不同时间维度,数据完整 7. 匹配率,针对主键,查看抽样数据匹配率 |
正确性 |
1. 代码逻辑正确 2. 数据表关联后,数据量正确 3. 与源头核对,数据正确 4. 与外部数据核对, 数据正确 |
唯一性 |
1. 针对指定维度,数据唯一 2. 主数据来源唯一 3. Join表,关联主键组合唯一 |
合理性 |
1. 数据分布合理 2. 数据枚举值 3. 同表不同列,数据关系合理 4. 不同表,统一字段或相关字段,数据关系合理 5. 不同时间跨度,数据波动合理 |
及时性 |
定时任务数据是否按时生成数据更新频率 |
一致性 |
1. 不同产品的一致性 2. 不同组件的一致性 |
3.过程管理
主要包括数据测试指导规范、准入准出标准、Bug定级、提测模板、报告模板、知识库积累。
三、线上质量,如何保障?
1.数据监控
定级监控:系统定期清理库表,即使每日按规则清理后,总库表量也在数万以上。兼顾广度及深度,通过库表定级,按等级监控。
监控规则:
一级分类 |
二级分类 |
三级分类 |
监控点 |
注释 |
表级别 |
及时性 |
更新频率 |
按时更新(分区) |
比如日更,验证分区/相关字段值为t-1 |
完整性 |
总条数 |
>阈值 |
阈值可根据前一日数据量xx%确定 |
|
变化率 |
1日变化率<10% |
|||
7日变化率<10% |
||||
30日变化率<10% |
||||
磁盘占用 |
>阈值 |
阈值可根据前一日数据量xx%确定 |
||
变化率 |
1日变化率<10% |
|||
7日变化率<10% |
||||
30日变化率<10% |
||||
字段级别 |
完整性 |
空值率 |
>阈值 |
阈值根据实际字段不同,可参考历史空置率设定 |
有效唯一值数据量 |
>阈值 |
|||
变化率 |
1日变化率<10% |
|||
7日变化率<10% |
||||
30日变化率<10% |
||||
唯一性 |
主键/组合字段唯一 |
|||
主键不为空 |
||||
合理性 |
取值范围 |
取值范围内 |
1. 枚举值,在枚举范围内 |
|
2. 非枚举值,根据字段含义在一定范围内 |
||||
数据分布 |
>阈值 |
|||
准确性 |
对比y值 |
和y值差异率<阈值 |
||
关键业务指标 |
匹配率 |
device-> id |
样本匹配率 |
匹配上的样本数据量/输入样本总数据量 |
样本匹配结果变化率 |
可以按device,id group by, 再和新结果对比相同数据/输入的总数据量 |
|||
同一device匹配结果唯一 |
||||
id -> device |
样本匹配率 |
|||
样本匹配结果变化率 |
可以按device,id group by, 再和新结果对比相同数据/输入的总数据量 |
|||
id匹配结果唯一 |
||||
device->标签 |
有效标签数据量>阈值 |
使用样本数据验证 |
||
有效标签覆盖率>阈值 |
使用样本数据验证 |
|||
id -> 标签 |
有效标签数据量>阈值 |
使用样本数据验证 |
||
有效标签覆盖率>阈值 |
使用样本数据验证 |
|||
稳定性 |
PSI稳定性 |
|||
主键结果变化率 |
<阈值 |
监控结果:
1)规则设定
按不同表及监控维度,添加监控指标。
2)监控结果查看
收到告警,查看详情,分析告警内容。
2.调度监控
从数据源到数据应用,就像是一条逐步细分的河流,而这一条条通道就像是调度系统中每日task。河流流速是否正常,分支是否阻塞。在生产过程中,可以通过调度告警来发现。核心调度识别,调度告警链路覆盖。
1)根据核心表和核心标签对应的表
2)梳理出核心调度
3)调度任务添加告警机制
四、自动化测试
自动化测试的目的是将复杂的内容,用工具简单化。将重复性高的事项,用工具自动化。按照不同的业务方向,将自动化分为以下6个模块。
1.数据迭代自动化测试
应用场景:当已有表的新逻辑上线前,需要从各个维度对比测试表数据和线上表数据,保证数据变动合理性。
2.数据EDA探索
应用场景:当有新需求提测时,可以通过智能自动化测试方式,快速知道一张表的具体情况,如字段空值率、数据唯一性等。
3.批量数据自动化测试
应用场景:在对多表执行其共有测试用例时使用,从而提升效率。
4.可视化报表
应用场景:针对具体业务需求,实现数据时间序列趋势图等,直观感受数据波动。
5.数据安全扫描
应用场景:每周定期扫描数万张库表,智能发现潜在安全隐患。
6.数据字段定级
应用场景:数十万字段等级评定。
五、总结
团队目前针对数万张库表定级,数千张库表监控、数千个指标监控覆盖。数万张库表定期安全扫描,数十万字段等级评定。但在整体数据质量保障中仍有提升空间待完成,如:
监控维度,针对业务场景定制监控维度不够
业务层面,需要和业务伙伴总结业务规则,增强业务层面验证
自动化待平台化,数据验证平台一体化
通用数据验证智能化,自动识别字段并生成自动化验证用例
监控添加智能化,根据历史周期及字段,智能生成监控规则
…