我想实现一个简单的用例,使用NiFi将CSV字段中的多个字符串/文本值更新为Integer值。例如,我的CSV文件如下所示:
输入CSV文件:
字段_1,字段_2
美国,苹果
美国,苹果
印度,葡萄
唐人街,橙色
澳大利亚,桃子
印度,葡萄
唐人街,橙色
所以我希望输出CSV像这样:
输入CSV文件:
字段_1,字段_2
1,苹果
1,苹果
4,葡萄
3,橙色
2,桃子
4,葡萄
3,橙色
我希望将Field_1中的所有美洲更新为1,将澳大利亚国家更新为2,将中国城更新为3,依此类推...我只能使用 UpdateRecord处理程序将一个值更新为将替换价值策略用作“ 文字替换”。请参见下面的图片:
但是我无法更新Field_1中的剩余值,例如中国,印度等。我知道可以复制多个UpdateRecord处理器来实现此目的,但是我只想用一个处理器来实现此用例。如何使用一个处理器执行此操作?如果是,要在NiFi中设置什么配置以实现此目的? 先感谢您。任何帮助深表感谢。
答案 0 :(得分:0)
ReplaceTextWithMapping
处理器可以执行此操作。它读取一个包含值映射的“查找”文件,并逐行替换。这是a related answer,其中包含示例配置值。它不是“面向记录的”,但适用于您描述的场景。
答案 1 :(得分:0)
使用 QueryRecord
处理器(在语句时使用类似Sql的情况)
(或)
LookupRecord
处理器,方法是定义 SimpleKeyValueLookupService
答案 2 :(得分:0)
在字段定义上再做一次替换。
${field.value:replace("America","1"):replace("India","4"):replace("Australia","2")}
等
这对我有用