Apache 使用NiFi更新CSV内字段中的值
我想实现一个简单的用例,使用NiFi将CSV内的字段中的多个字符串/文本值更新为整数值。例如,我的CSV文件如下所示: 输入CSV文件: 字段1、字段2 美国,苹果 美国,苹果 印度,葡萄 橙色中国城 澳大利亚国家,桃子 印度,葡萄 橙色中国城 因此,我希望输出CSV如下所示: 输入CSV文件: 字段1、字段2 1、苹果 1、苹果 4、葡萄 3、橙色 2、桃子 4、葡萄 3、橙色 我希望所有美国地区1更新为1,澳大利亚国家更新为2,中国城更新为3,依此类推……我能够使用UpdateRecord processor更新一个值,就像使用替换值策略“Literal replace”一样。请参见下面的附图: 但我无法更新字段1中的剩余值,如中国、印度等。我知道我可以复制多个UpdateRecord处理器来实现这一点,但我只想用一个处理器来实现这个用例。如何使用一个处理器执行此操作?如果是,在NiFi中设置什么配置来实现这一点?Apache 使用NiFi更新CSV内字段中的值,apache,etl,apache-nifi,Apache,Etl,Apache Nifi,我想实现一个简单的用例,使用NiFi将CSV内的字段中的多个字符串/文本值更新为整数值。例如,我的CSV文件如下所示: 输入CSV文件: 字段1、字段2 美国,苹果 美国,苹果 印度,葡萄 橙色中国城 澳大利亚国家,桃子 印度,葡萄 橙色中国城 因此,我希望输出CSV如下所示: 输入CSV文件: 字段1、字段2 1、苹果 1、苹果 4、葡萄 3、橙色 2、桃子 4、葡萄 3、橙色 我希望所有美国地区1更新为1,澳大利亚国家更新为2,中国城更新为3,依此类推……我能够使用UpdateRecord
先谢谢你。非常感谢您的帮助 处理器可以执行此操作。它读取包含值映射的“查找”文件,并执行逐行替换。下面是具有示例配置值的。它不是“面向记录的”,但应该适用于您描述的场景 使用
QueryRecord
处理器(使用类似Sql的case-when语句)
(或)
LookupRecord
处理器,通过定义SimpleKeyValueLookupService
有关类似问题,请参阅和链接。感谢您快速回复。你能帮我处理我用例的正则表达式吗?我不确定如何为我的案例定义正则表达式。根据提供的输入,我将尝试类似于
^([\w\s]+)(?=\s?,)
的方法。这将匹配行首的“单词”,后跟(可选)空格和逗号。为了与查找文件中的键/值对对齐,您可能需要对捕获组进行一些调整。处理器的出处数据和日志输出在这里会很有帮助。@Shu我不能使用UpdateRecord处理器实现这一点吗?同时使用此链接:将使我写出CSV中的所有列。例如,我有1000+列,我只想更新字段_1,那么该字段的case语句如何呢?我应该做select*,Case语句吗?我很困惑here@Shu或者我可以用ReplaceText实现这一点?如果是,怎么做?提前谢谢