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

wz1wpwve  于 2022-11-25  发布在  Apache
关注(0)|答案(3)|浏览(215)

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

输入CSV文件:
字段_1、字段_2

美国,苹果
美国,苹果
印度,葡萄
唐人街,橙子
澳大利亚民族,桃子
印度,葡萄
唐人街,橙子
因此,我希望输出CSV如下所示:

输入CSV文件:
字段_1、字段_2

1、苹果
1、苹果
4、葡萄
3、橙子
2、桃子
4、葡萄
3、橙子
我希望Field_1中的所有America更新为1,Australian Nation更新为2,China Town更新为3,依此类推......我可以使用UpdateRecord处理器更新一个值,因为使用替换值策略“Literal replace"。请参见下面的随附图片:

但我无法更新Field_1中的剩余值,如中国、印度等。我知道我可以复制多个UpdateRecord处理器来实现此目的,但我希望仅使用一个处理器来实现此用例。如何使用一个处理器来实现此目的?如果可以,在NiFi中设置什么配置来实现此目的?提前感谢。非常感谢您的帮助。

r55awzrz

r55awzrz1#

使用**QueryRecord**处理器(使用Sql之类的case when语句)
(或)

LookupRecord处理器,方法是定义SimpleKeyValueLookupService

请参阅thisthis链接以了解类似问题。

zwghvu4y

zwghvu4y2#

ReplaceTextWithMapping处理器可以执行此操作。它读取一个包含值Map的“查找”文件,并执行逐行替换。下面是a related answer的示例配置值。它不是“面向记录”的,但应该适用于您所描述的场景。

xmakbtuz

xmakbtuz3#

在字段定义上执行另一个替换。

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

等等。
这对我很有效

相关问题