ETJava Beta | Java    注册   登录
  • 搜索:
  • kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

    发表于      阅读(44)     博客类别:Crawler     转自:https://www.cnblogs.com/zjBoy/p/18249126
    如有侵权 请联系我们删除  (页面底部联系我们)  

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