场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,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、还有一些其他的规则,朋友们可以自己进行探索下,若有问题欢迎评论区或者交流群内讨论。