chaojie
2022/07/17阅读:11主题:极简黑
工作笔记|聊聊数据质量稽核
本文结构
-
前言 -
数据质量稽核 -
数据质量评估规则
0
大家好,我是超杰。之前写过一篇关于ETL与数据质量的文章,今天聊聊数据质量稽核这部分工作内容。分为两部分,第一部分讲数据质量稽核,第二部分讲数据质量评估规则。
如果你在开发数据平台,但是并没有该功能,或者该功能并不完善,可以看看这篇笔记,希望能够对数据质量相关模块的功能提供帮助。
1
说说什么是稽核?
稽核,理解为稽查和复核,直白的理解,检查数据是否准确,是否存在异常。
2
为什么要做数据质量稽核?
ETL中,我们要经历,抽取,转换,加载的三个过程。
抽取部分
如果源表的表结构变动,可能导致抽取的数据少字段;如果源表的表存储的逻辑修改了,导致数据不准确。
例如,“实际金额 = 实收金额”,改为“当某标识=1时,实际金额 = 实收金额”
转换、加载部分
如果我们要把表的指标计算修改了,但要保证与之前结果表的粒度保持一致,所以这里要校验数据量的一致性。
3
数据质量稽核到底做什么?
-
准确性校验 -
波动性校验 -
唯一性校验 -
一致性校验 -
空值校验 -
逻辑校验 -
及时性检查 -
拉链表检查 -
自定义
1 准确性校验
定义: 准确性是指数据不包含错误或异常值
针对对象: 维度,度量,时间格式
1.1 维度
场景: 表数据可能存在预料之外的维度
前提条件: 维护一套码值表。
校验方法: 将表字段与码值表进行关联,并且记录统计匹配不上的属性值以及对于数据量。
1.2 度量
场景: 可能针对一些度量不符合业务预期。比如数量存在小数点,或者存在负数。
检验方法: 判断某字段的预期之外的数据量,例如,规则是不能存在小于0的数,就判断是否存在小于0的数,以及统计小于0的条数。
1.3 时间格式
场景: 时间格式字段出现异常值,出现不符合规则的数据。
检验方法:使用正则表达式。
2 波动性校验
定义: 字段数据值对比之前的业务周期数据值的波动趋势是否在一定范围内。
例如: 校验“商品收益表”中某商品今日收益总额与昨日相比上下波动范围是否在预期值内。
针对对象:度量,记录数
2.1 度量
前提条件:
-
设置波动阈值 -
选择度量聚合类型 -
设置对比周期
假如昨天累计收益1万,今天累计收益0.8万,如果我们波动上下区间是10% ,那么今天的数据就属于异常,因为今天波动阈值环比下降了20%
但是上周的平均客单价在200,因为之前活动营销的影响,引入大量客户,近期来买其他产品,这周的平均客单价是350,提高了75%
上面的场景,波动上下区间10%代表波动阈值;累计收益,属于sum聚合,平均客单价,属于avg聚合;环比,周同比,属于对比周期。
校验方法:针对一些度量设置合理的波动阈值,在正常业务的情况下,如果波动区间出现了500%,可能是异常的,需要进行排查。
2.2 记录数
检验方法: 针对比较周期(环比、同比)的数据条数,来判断是否存在异常。
3 唯一性校验
定义: 校验某一列或某几列数据是否唯一
检验方法: 选择一个或者多个字段表示为联合主键。
4 一致性校验
定义: 对两表间的记录数及数据是否一致进行校验。
针对对象: 记录数,数据
检验方法: 首先针对记录数,比较两张表的数据量是否一致,其次比较数据,将两站表的字段拼接起来,采用md5加密关联,匹配不上的就是异常数据。
5 空值校验
定义: 对某一列数据是否含有空值的校验。
检验方法: 判断某字段是否为空值,进行统计。
6 逻辑校验
定义: 对表内的某一列数据或某几列数据的表达式与其他某一列或某几列数据的表达式比较。
例如:商品价格(列1) * 折扣系数(列2) = 实际金额(列3)
检验方法: 列1*列2,是否等于列3,如果表达式不等,将记录下整条数据。
7 及时性检查
定义: 数据的更新时间是否在指定时间范围内。
检验方法: 日期字段最新数据与当前系统时间相比,是否在误差时间范围内。
8 拉链表检查
定义: 是否有断链、交叉链、重复链现象。
9 自定义
定义: 是否符合自定义SQL脚本的标准。
4
以下是数据质量评估的规则

数据平台,可以通过以上规则,评估不同表的数据质量,也可对某个业务系统的整体数据质量的评估。
最终可以产出数据质量报告反馈给业务系统,通关改进业务系统,来提升数据质量。
今天就分享到这里了,希望对刚接触数据治理的同学,有所帮助。
公众号:超杰的数据仓库笔记
私人微信:chaojieY
- END -作者介绍