kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

kettle,etl · 浏览次数 : 2

小编点评

以下是根据您提供的信息整理的内容,已按照要求进行排版: **数据校验总体设计** 1. **加载数据**:使用jsonn input(或其他数据加载方式)加载`data-valid.json`文件数据。 2. **设置校验规则**:设置一系列校验规则,对数据进行清洗。 3. **校验通过与失败处理**:校验通过的数据继续后续处理,失败的数据记录日志或存入表中。 **步骤错误处理设置** 1. 在错误处理步骤中,设置错误数、错误描述、错误列的列名以及错误编码的字段名称。 **类型校验** 对于上游传递的整数类型数据,若实际需要字符串类型,可通过类型校验规则进行拦截。 **非空校验** 确保`en_name`字段不为空,空值数据将流向错误记录步骤。 **枚举值校验** `sex`字段的取值范围只允许为男和女,不符合条件的数据将流向错误记录步骤。 **字段值长度校验** `phone`字段的长度需为11位,不符合条件的数据将流向错误记录步骤。 **万能正则校验** 使用正则表达式对邮箱进行校验,不符合条件的数据将流向错误记录步骤。 **其他规则探索** 除了上述规则外,还可根据实际业务需求探索其他定制化规则,如有问题可在评论区或交流群内讨论。 **归纳总结** 在进行数据校验时,需先加载数据,然后根据业务需求设置一系列校验规则。校验通过的数据继续处理,失败的数据则记录日志或存入表中。在错误处理步骤中,需设置错误数、错误描述等相关信息。此外,还需注意类型校验、非空校验、枚举值校验、字段值长度校验以及万能正则校验等。在实际应用中,可结合业务需求探索更多定制化规则。

正文

场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,trans不报错,但通过错误处理步骤捕捉,并记入文件,整个数据管线正常完成直至处理完最后一个输入行。

解决方案:使用步骤【数据检验】进行处理。这个步骤和常规的业务系统对接三方接口一个逻辑,将符合规则的数据放行,不符合的记录。

数据准备(data-valid.json文件中的内容如下),基于如下数据分别进行字段类型、非空、枚举值、字段值长度、邮箱正则校验。

[{
    "id": 1,
    "name": "Java小金刚1",
    "sex": "男",
    "en_name": "xiaojingang1",
    "phone": "13931111111",
    "email": "1@qq.com"
}, {
    "id": 2,
    "name": "Java小金刚2",
    "sex": "男",
    "en_name": "",
    "phone": "13931111111",
    "email": "2@qq.com"
}, {
    "id": 3,
    "name": "Java小金刚3",
    "sex": "未知",
    "en_name": "xiaojingang3",
    "phone": "13931111111",
    "email": "3@qq.com"
}, {
    "id": 4,
    "name": "Java小金刚4",
    "sex": "男",
    "en_name": "xiaojingang4",
    "phone": "1393",
    "email": "4@qq.com"
}, {
    "id": 5,
    "name": "Java小金刚5",
    "sex": "男",
    "en_name": "xiaojingang5",
    "phone": "13931111111",
    "email": "5qq.com"
}]

 

1、数据校验总体设计如下:

1)jsonn input 加载data-valid.json文件数据,实际使用时不一定是jsonn input 步骤,根据自己业务情况选择则。

2)数据校验步骤,设置一系列校验规则进行清洗数据。
3)校验通过的数据继续后续处理,校验失败的数据记录日志或者存入表中,这里方便演示所以只打了日志。
2、步骤错误处理设置,点击X号,然后在弹出的窗体里面设置错误数列名,错误描述列名,错误列的列名,错误编码列名的字段名称,如下图所示:
 

3、类型校验,也就说如果上游传递过来的类型是integer类型,但是你需要的是String类型,这个时候可以进行类型校验规则拦截,如下图所示。

4、非空校验,校验en_name字段不允许为空,空值的数据直接流向错误记录步骤,如下图所示:

 5、枚举值校验,sex字段的取值范围只允许男和女两种,不符合条件的数据直接流向错误记录步骤,如下图所示:

6、字段值长度校验,校验phone电话号码长度需要是11位,不符合条件的数据直接流向错误记录步骤,如下图所示:

7、万能正则校验,使用正则表达式可以实现各种各样的定制化需求,这里使用正则校验邮箱是否正确,不符合条件的数据直接流向错误记录步骤,如下图所示:

 8、还有一些其他的规则,朋友们可以自己进行探索下,若有问题欢迎评论区或者交流群内讨论。

 

与kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏相似的内容:

kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,trans不报错,但通过错误处理步骤捕捉,并记入文件,整个数据管线正常完成直至处理完最后一个输入行。 解决方案:使用步骤【数据检验】进行处理。这个步骤和常规的业务系统对接三方接口一个逻辑,将符合规则的数据放行,不符合的记录。 数据准备(

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景: kettle中http post步骤如何发送http请求且传递body参数? 解决方案: http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口,索性用python搭建一个简单的接口,关键代码如下(安装python环境略): fro

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步

1、之前kettle cdc mysql的时候使用的方案是canal+kafka+kettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。 注:CDC (Change Data Capture) 是一种技术,用于捕获和同步数据库中的更改。 1)Debezium步

kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤

场景:ETL沟通交流群内有小伙伴反馈,如何多个分支处理完毕之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。 解决:使用步骤Blocking step进行阻塞处理即可。 1、 如下流程图中利用Blocking step步骤同时阻塞【模拟表输出1】和【模拟表输出2】两个步骤,只有当两个步

kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy

场景:ETL沟通交流群内有小伙伴反馈,如何在同步一批数据完成之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。 解决:使用步骤Blocking step进行阻塞处理即可。 1、下面的demo演示从表t1同步数据至表t2(t1表中有三条数据,t2为空表,两个表表结构相同),然后数据同步完

使用Kettle定时从数据库A刷新数据到数据库B

# 一、需求背景 由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据``定时T+1`` ``增量``的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下: 1. Kettle (数据抽取、清洗、转换、

工作疑难问题解决4例

记录一下工作上疑难问题解决: 一,方便的页面监控 前几天早上,负责的kettle抽取数据表的任务又报错了,早上看手机有4个未接报警电话,一看是人员表,原来昨天报表系统有个大的查询一直未查询完成,导致truncate这个人员表,无法活动meta的锁,后续执行抽取和计算的都报错。为解决以前这个很偶发的大