kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏
场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,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号,然后在弹出的窗体里面设置错误数列名,错误描述列名,错误列的列名,错误编码列名的字段名称,如下图所示:
![](https://img2024.cnblogs.com/blog/412121/202406/412121-20240615114454413-776790861.png)
3、类型校验,也就说如果上游传递过来的类型是integer类型,但是你需要的是String类型,这个时候可以进行类型校验规则拦截,如下图所示。
4、非空校验,校验en_name字段不允许为空,空值的数据直接流向错误记录步骤,如下图所示:
5、枚举值校验,sex字段的取值范围只允许男和女两种,不符合条件的数据直接流向错误记录步骤,如下图所示:
6、字段值长度校验,校验phone电话号码长度需要是11位,不符合条件的数据直接流向错误记录步骤,如下图所示:
7、万能正则校验,使用正则表达式可以实现各种各样的定制化需求,这里使用正则校验邮箱是否正确,不符合条件的数据直接流向错误记录步骤,如下图所示:
8、还有一些其他的规则,朋友们可以自己进行探索下,若有问题欢迎评论区或者交流群内讨论。