【ETL】系列八:数据质量的保障——数据校验

前面我们介绍了4大类核心转换场景。

【ETL】系列四:核心转换场景—单表间直转

【ETL】系列五:核心转换场景-字段合并与字段拆分

【ETL】系列六:核心转换场景-行转列与列转行

【ETL】系列七:核心转换场景-规格化清洗

之前的文章主要是针对同构或异构数据的转换,然而在数据同步之前或同步之后,都存在数据校验的业务场景。

今天这个篇幅,我们来介绍数据质量管理利器——校验。

找不到合适的图了就将就看吧.jpg

希望在这篇文章结束之后,你可以对以下问题有进一步的理解。

为什们需要数据校验?数据校验的常用规则有哪些?
怎么用kettle对数据进行校验?
kettle的数据校验有哪些不足?如何改进?

一、数据校验介绍

数据校验是在数据抽取、清洗转换流程完成之后,通过一系列的校验规则,定位到错误数据,并将异常数据推送给下游处理,最终提升数据质量的环节。
数据校验是数据质量的重要保障,目前业内认可的数据质量的标准有:

准确性: 描述数据是否与其对应的客观实体的特征相一致;
完整性: 描述数据是否存在缺失记录或缺失字段;
一致性: 描述同一实体的同一属性的值在不同的系统是否一致;
有效性: 描述数据是否满足用户定义的条件或在一定的域值范围内;
唯一性: 描述数据是否存在重复记录;
及时性: 描述数据的产生和供应是否及时;
稳定性: 描述数据的波动是否是稳定的,是否在其有效范围内。

以上列出的数据质量标准只是一些通用的规则,这些标准是可以根据数据的实际情况和业务要求进行扩展。

由数据质量的标准,对应通用的校验规则有:

单字段校验:通过单一字段的约束条件进行校验,包含不为空、比较运算、包含、不包含、取值范围(区间)、取值范围(枚举)、字段长度、字段类型、正则表达式等规则,可用于校验数据的准确性、完整性等;
勾稽关系校验:校验字段通常和其他字段做勾稽对比,利用字段平衡关系(衍生计算)来进行校验;
唯一性校验:针对单一字段或者多个字段组合后做唯一性约束校验,通过重复记录行或其他违反唯一性约束属性值进行校验;
关联性校验:针对字段的关联关系校验,通过引入其他关联字段验证字段的存在和缺失进行校验;
记录行统计型校验:针对某个字段的记录行总数做校验,通过统计记录行数量与合理阈值范围比较来进行校验;
多源对比校验:针对多个数据源的数据进行对比校验,通过关联字段和对比字段的对比,以校验通过率高或匹配率高的数据知晓哪个数据源的数据质量高。

二、怎么用kettle对数据进行校验?

数据校验在完整的数据处理过程中的重要性不言而喻。在kettle中可以进行校验的方式也比较多,我们介绍以下几种常用的方式:

(1)数据校验的插件,支持单字段校验。


kettle内置数据校验.png

从以上截图可以发现,数据校验的插件主要是针对单字段进行校验,校验规则也比较简单。

(2)使用JavaScript函数来实现ETL的自动化校验。

可参考利用kettle的JavaScript 函数进行ETL数据校验

此处不做赘述。

(3)利用合并记录插件,进行多路数据的对比校验。

在这里我们介绍简单介绍一下【合并记录】的操作方式,【合并记录】这一步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。kettle的这种方式类似于简单的多源对比校验。

实操样例:将2路来源的数据进行比较后合并。

操作步骤:
1、点击左侧的 核心对象,选择自定义常量数据,对比2个数据源,就拖选2个插件。

多路数据1-旧数据.png

多路数据2-新数据.png

2、点击左侧的 核心对象,选择 合并记录,进行相关配置。

合并记录进行2路数据比较.png

在这里,需要理解旧数据来源、 新数据来源、标志字段、关键字段、比较字段的含义。

1、旧数据来源:旧数据来源的步骤,选择“自定义常量数据-旧数据”;
2、新数据来源:新数据来源的步骤,选择“自定义常量数据-新数据”;
3、标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种:

“identical” – 旧数据和新数据一样
“changed” – 数据发生了变化
“new” – 新数据中有而旧数据中没有的记录
“deleted” –旧数据中有而新数据中没有的记录

4、关键字段:唯一索引放在关键字段,用来连接新旧数据源的记录,用于定位两个数据源中的同一条记录,这里是comcode;
5、比较字段:对于两个数据源中的同一条记录中,指定需要比较的字段,这里是proname和curamount;

注:旧数据和新数据要有相同的字段名称,以便关联2个来源的数据。

3、查看合并结果,在标志字段中看identical、changed、new、deleted的对比结果。

合并后的数据将包括旧数据来源和新数据来源里的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用标志字段来指定新旧数据的比较结果。

字段合并结果.png

对于比较、合并之后的数据,可以定义后续的处理方式,比如new的新增数据进行插入,changed数据进行更新,deleted数据进行删除,identical数据不做处理;或者,对于对比不一致(除了identical的情况)的数据,进行清洗纠错处理,确保数据的正确性。

以上是对比2个数据源结果合并的处理流程,是多源数据对比的一个简化版,在实际的业务处理过程中,会面临更加复杂的应用场景。

三、 kettle的数据校验有哪些不足?如何改进?

Kettle主要是处理数据抽取、转换、同步加载的工具,其校验能力并不是很优秀,存在很多不足。

Kettle的校验有哪些不足

1、校验规则弱:单字段校验、记录行校验、多源对比校验的规则无法有效满足复杂的业务场景;
2、多个校验规则无法快速配置:实际业务中,校验数据对象需要用到多个校验规则,在kettle中无法快速配置;
3、缺少批量操作:校验插件中的操作,缺少批量操作功能,影响配置效率;
4、缺失校验规则管理:缺失以数据表等维度的校验规则的增删查改和操作日志等管理功能;
5、缺失校验异常管理:缺失校验结果异常查看和处理,无法有效跟踪问题;
6、缺失数据质量检核分析:缺少从数据完整性、准确率、及时性等维度,实现字段级、表级的数据质量分析能力。

校验的改进方向

在实际的业务处理过程中,上述提到的kettle校验不足,无法有效满足校验需求,分享几个改进方向。

1、完善校验规则:kettle的校验规则缺失较多,可以从数据业务中完善校验规则类型,比如财务数据常用的勾稽关系校验;
2、校验规则配置可视化:无论是用SQL函数还是JavaScript函数的实现校验的方式对业务能力的要求都相对较高,可以提供更加简单的、可视化的方式进行配置,降低配置难度;
3、支持自定义校验规则集:一类待校验数据使用一类已定义好的校验规则集,减少单个校验规则的选择和配置;
4、增加批量操作:对于校验规则的配置、校验规则集的定义、校验规则执行方式设置、校验结果处理都需要在交互上支持批量操作;
5、增加校验规则管理功能:对于具体的业务来说,需要支持数据表、规则名称等维度的管理功能,可以按照业务所需的维度,进行校验规则的查看、新增、修改和删除,当然,对于规则的操作日志都需要完整地被记录下来;
6、增加校验异常的处理:校验的异常需要根据具体异常类型支持自动化处理和人工处理2种方式,制定各种自动纠错策略能有效地减少人工处理工作量;
7、增加数据质量分析:增加数据质量问题的分布分析、质量问题趋势分析、质量改善情况等质量分析报表。

除了上述的一些改进方向之外,还有很多可以挖掘改进的点,这些就需要根据具体业务来不断梳理和实现了。

以上描述的不足和改进方向,仅针对业务场景的覆盖度、产品功能的完善性、工具产品的易用性的角度来说的,在数据校验过程中,还有更为重要的性能指标要求,如何快速、稳定地对十万、百万数据进行校验,并及时输出校验结果,这需要很多产品策略和技术方案来实现。

在数据治理体系中,作为数据质量保障的数据校验系统,是需要产品经理持续打磨的工具。

更多关于数据校验的探讨,欢迎大家交流哦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容