NiFi如何在UpdateAttribute处理器中获取更新的JSON值?

时间:2018-12-10 07:35:51

标签: apache-nifi

我有以下工作流程:

ConsumeKafkaData-> EvaluateJsonFlow-> UpdateRecord-> Putfile。

我有以下简单的JSON消息: {“ name”:“ Yeshwant”,“ active”:false}

在EvaluateJsonPath中,我在配置中创建了一个属性“名称”,该属性链接到上述json数据的“名称”属性。

在UpdateAttribute处理器中,我创建了一个规则,当“名称”的值等于“虚拟”时,然后更改为“有趣”。我可以将属性“名称”的值更改为值“有趣”。但是输入和输出json数据没有改变。为什么? UpdateAttribute如何直接更改JSON中的数据?我缺少任何配置吗?

即使在PutFile处理器上,我也看不到json数据已更改。

谢谢 是的

1 个答案:

答案 0 :(得分:4)

在现有流程中,您要更改 attribute associated to the flowfile 的值,而不是流程文件的实际内容。

UpdateAttribute 处理器之后,使用 AttributesToJson 处理器并重新创建输出 JSON 内容。

流量:

1. ConsumeKafkaData
2. EvaluateJsonFlow //Extract all json data attributes as flowfile attributes
3. UpdateAttribute 
4. AttributeToJSON //AttributesList -> name,active; Destination -> flowfile Content
5. Putfile

有关AttributesToJSON处理器的更多详细信息/用法,请参考this链接。

此外,在这种情况下,您可以使用面向记录的处理器,即 UpdateRecord/QueryRecord 处理器,然后使用 LiteralValue 策略,并对Expression language属性的值使用if-else name

如果您使用的是QueryRecord processor,请在您的sql查询中写一个case语句。

请参阅this链接以获取更多详细信息/使用updateRecord处理器。

请参阅this链接以了解QueryRecord处理器的更多详细信息/用法。