使用 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")}
等等
对我有用
我想实现一个简单的用例,使用 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
使用 QueryRecord
处理器(使用 Sql like case when 语句)
(或)
LookupRecord
处理器通过定义 SimpleKeyValueLookupService
有关类似问题,请参阅
在字段定义上再做一次替换。
${field.value:replace("America","1"):replace("India","4"):replace("Australia","2")}
等等
对我有用