使用 NiFi 更新 CSV 中字段中的值

Update the values in a field inside the CSV using NiFi

我想实现一个简单的用例,使用 NiFi 将多个 string/Text 值更新为 CSV 内字段中的整数值。例如,我的 CSV 文件如下所示:

输入 CSV 文件:

Field_1,Field_2

美国,苹果

美国,苹果

印度,葡萄

奥兰治中国城

澳大利亚民族,桃子

印度,葡萄

奥兰治中国城

所以我希望输出 CSV 如下:

输入 CSV 文件:

Field_1,Field_2

1、苹果

1、苹果

4、葡萄

3、橙色

2、桃子

4、葡萄

3、橙色

我希望 Field_1 中的所有美洲都更新为 1,澳大利亚国家更新为 2,中国城更新为 3,依此类推...我只能使用 [=57= 更新一个值]UpdateRecord 处理器 将替换值策略用作“文字替换”。请看下面的附图:

但我无法更新 Field_1 中的剩余值,如中国、印度等。我知道我可以复制多个 UpdateRecord 处理器来实现这一点但我只想用一个处理器来实现这个用例。我怎样才能使用一个处理器做到这一点?如果是,在 NiFi 中设置什么配置来实现这一点? 先感谢您。任何帮助深表感谢。

ReplaceTextWithMapping processor can perform this operation. It reads a "lookup" file which contains the value mappings and performs a line-by-line replacement. Here is 具有示例配置值。它不是 "record-oriented",但应该适用于您描述的场景。

使用 QueryRecord 处理器(使用 Sql like case when 语句)

(或)

LookupRecord 处理器通过定义 SimpleKeyValueLookupService

有关类似问题,请参阅 and this 链接。

在字段定义上再做一次替换。

${field.value:replace("America","1"):replace("India","4"):replace("Australia","2")}

等等

对我有用