【问题标题】:Replace string value to integer value in NiFi within a same column将字符串值替换为 NiFi 中同一列中的整数值
【发布时间】:2018-12-20 22:12:09
【问题描述】:

我想替换一个 '字符串值' 并使用 Nifi ReplaceText 将该值作为 整数值 输入。我不知道如何在 NiFi 中实现这一点。

所以我的场景如下:

我将有一个 CSV 文件,其中包含很少的整数字段和几个字段作为总字符串值。对于具有字符串值的字段,我想将其作为预定义的整数插入到我的数据库表中。例如: 我的 CSV 如下所示:

字段1、字段2、字段3、字段4、字段5

1,2,abc,45,约翰

23,12,pqr,28,山姆

98,75,lmn,87,史密斯

所以现在在 MySQL 表中,Field3 和 Field4 的数据类型为整数,所以在将 CSV 插入数据库之前,我想将字符串值更改为预定义的整数值,即对于 Field3 abc 值应作为 0 输入到 MySQL 表中,pqr 作为 1,lmn 作为 2 等等......类似地,Field4 中的值应该在 MySQL 表中输入为 John 作为 10,Sam 作为 20 和 Smith为 30 ......所以我上面的 csv 应该按如下方式存储在我的数据库中:

字段1、字段2、字段3、字段4、字段5

1,2,0,45,10

23,12,1,28,20

98,75,2,87,30

我想我可以通过 ReplaceText 实现这一点。但是,如果有更好的方法来实现这一点,那就太好了。因为我的 CSV 将有 1000+ 列,假设 50+ 列将具有我需要处理并转换为预定义整数值的字符串值。是否有可能在 NiFi 中实现这一点?

如果是,那么要设置哪些配置以及最好的方法是什么?

谢谢!

【问题讨论】:

    标签: apache amazon-s3 apache-nifi


    【解决方案1】:

    使用 QueryRecord 处理器并配置/启用 Reader/Writer 控制器服务

    • custom sql query 作为新属性添加到处理器

    QueryRecord 配置:

    select Field1,Field2,
        CASE WHEN Field3='abc' THEN '0'
             WHEN Field3='pqr' THEN '1'
             WHEN Field3='lmn' THEN '2'
        end Field3,
            Field4,
        CASE WHEN Field5='John' THEN '10'
             WHEN Field5='Sam' THEN '20'
             WHEN Field5='Smith' THEN '30'
        end Field5 
    from FLowfile
    

    QueryRecord 处理器的输出流文件将具有您想要的结果

    Field1,Field2,Field3,Field4,Field5
    1,2,0,45,10
    23,12,1,28,20
    98,75,2,87,30
    

    使用this 模板作为您对上述流程的参考,QueryRecord 处理器使用Apache Calcite sql parser

    【讨论】:

    • QueryREcord 是否有助于从数据中增量获取?因为我希望在 TimeStamp 字段上进行增量获取。这会为我的用例服务吗?谢谢
    • @shrads,对于增量获取QueryRecord 不提供服务,它只运行sql on the flowfile content 然后outputs 查询的结果。使用 state manged processors 之一进行增量获取(如 QueryDatabaseTable、ListS3..etc)。
    • 所以你是说使用 QuerydatabaseTable ->Queryrecord -> 其他处理器?我的理解正确吗?
    • @shrads,是的..!!
    【解决方案2】:

    @Shu 的建议会很好用,但如果要完成的查找次数更多或增加,我强烈建议使用 LookupRecord 处理器并为初学者配置 SimpleKeyValueLookupService,因为您的 CASE声明会变得沉重和麻烦。

    因此您的流程可以更改为类似

    要了解如何使用,请查看此处提供的简单模板:https://gist.github.com/zenfenan/37eb1e4cd0e59a63e85b0400040720b6

    有用的链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2015-06-27
      • 2021-04-18
      • 2017-06-11
      相关资源
      最近更新 更多