前面我们介绍了4大类核心转换场景。
之前的文章主要是针对同构或异构数据的转换,然而在数据同步之前或同步之后,都存在数据校验的业务场景。
今天这个篇幅,我们来介绍数据质量管理利器——校验。
希望在这篇文章结束之后,你可以对以下问题有进一步的理解。
为什们需要数据校验?数据校验的常用规则有哪些?
怎么用kettle对数据进行校验?
kettle的数据校验有哪些不足?如何改进?
一、数据校验介绍
数据校验是在数据抽取、清洗转换流程完成之后,通过一系列的校验规则,定位到错误数据,并将异常数据推送给下游处理,最终提升数据质量的环节。
数据校验是数据质量的重要保障,目前业内认可的数据质量的标准有:
准确性: 描述数据是否与其对应的客观实体的特征相一致;
完整性: 描述数据是否存在缺失记录或缺失字段;
一致性: 描述同一实体的同一属性的值在不同的系统是否一致;
有效性: 描述数据是否满足用户定义的条件或在一定的域值范围内;
唯一性: 描述数据是否存在重复记录;
及时性: 描述数据的产生和供应是否及时;
稳定性: 描述数据的波动是否是稳定的,是否在其有效范围内。
以上列出的数据质量标准只是一些通用的规则,这些标准是可以根据数据的实际情况和业务要求进行扩展。
由数据质量的标准,对应通用的校验规则有:
单字段校验:通过单一字段的约束条件进行校验,包含不为空、比较运算、包含、不包含、取值范围(区间)、取值范围(枚举)、字段长度、字段类型、正则表达式等规则,可用于校验数据的准确性、完整性等;
勾稽关系校验:校验字段通常和其他字段做勾稽对比,利用字段平衡关系(衍生计算)来进行校验;
唯一性校验:针对单一字段或者多个字段组合后做唯一性约束校验,通过重复记录行或其他违反唯一性约束属性值进行校验;
关联性校验:针对字段的关联关系校验,通过引入其他关联字段验证字段的存在和缺失进行校验;
记录行统计型校验:针对某个字段的记录行总数做校验,通过统计记录行数量与合理阈值范围比较来进行校验;
多源对比校验:针对多个数据源的数据进行对比校验,通过关联字段和对比字段的对比,以校验通过率高或匹配率高的数据知晓哪个数据源的数据质量高。
二、怎么用kettle对数据进行校验?
数据校验在完整的数据处理过程中的重要性不言而喻。在kettle中可以进行校验的方式也比较多,我们介绍以下几种常用的方式:
(1)数据校验的插件,支持单字段校验。
从以上截图可以发现,数据校验的插件主要是针对单字段进行校验,校验规则也比较简单。
(2)使用JavaScript函数来实现ETL的自动化校验。
可参考利用kettle的JavaScript 函数进行ETL数据校验
此处不做赘述。
(3)利用合并记录插件,进行多路数据的对比校验。
在这里我们介绍简单介绍一下【合并记录】的操作方式,【合并记录】这一步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。kettle的这种方式类似于简单的多源对比校验。
实操样例:将2路来源的数据进行比较后合并。
操作步骤:
1、点击左侧的 核心对象,选择自定义常量数据,对比2个数据源,就拖选2个插件。
2、点击左侧的 核心对象,选择 合并记录,进行相关配置。
在这里,需要理解旧数据来源、 新数据来源、标志字段、关键字段、比较字段的含义。
1、旧数据来源:旧数据来源的步骤,选择“自定义常量数据-旧数据”;
2、新数据来源:新数据来源的步骤,选择“自定义常量数据-新数据”;
3、标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种:
“identical” – 旧数据和新数据一样
“changed” – 数据发生了变化
“new” – 新数据中有而旧数据中没有的记录
“deleted” –旧数据中有而新数据中没有的记录
4、关键字段:唯一索引放在关键字段,用来连接新旧数据源的记录,用于定位两个数据源中的同一条记录,这里是comcode;
5、比较字段:对于两个数据源中的同一条记录中,指定需要比较的字段,这里是proname和curamount;
注:旧数据和新数据要有相同的字段名称,以便关联2个来源的数据。
3、查看合并结果,在标志字段中看identical、changed、new、deleted的对比结果。
合并后的数据将包括旧数据来源和新数据来源里的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用标志字段来指定新旧数据的比较结果。
对于比较、合并之后的数据,可以定义后续的处理方式,比如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、增加数据质量分析:增加数据质量问题的分布分析、质量问题趋势分析、质量改善情况等质量分析报表。
除了上述的一些改进方向之外,还有很多可以挖掘改进的点,这些就需要根据具体业务来不断梳理和实现了。
以上描述的不足和改进方向,仅针对业务场景的覆盖度、产品功能的完善性、工具产品的易用性的角度来说的,在数据校验过程中,还有更为重要的性能指标要求,如何快速、稳定地对十万、百万数据进行校验,并及时输出校验结果,这需要很多产品策略和技术方案来实现。
在数据治理体系中,作为数据质量保障的数据校验系统,是需要产品经理持续打磨的工具。
更多关于数据校验的探讨,欢迎大家交流哦!