我有以下工作流程:
ConsumeKafkaData-> EvaluateJsonFlow-> UpdateRecord-> Putfile。
我有以下简单的JSON消息: {“ name”:“ Yeshwant”,“ active”:false}
在EvaluateJsonPath中,我在配置中创建了一个属性“名称”,该属性链接到上述json数据的“名称”属性。
在UpdateAttribute处理器中,我创建了一个规则,当“名称”的值等于“虚拟”时,然后更改为“有趣”。我可以将属性“名称”的值更改为值“有趣”。但是输入和输出json数据没有改变。为什么? UpdateAttribute如何直接更改JSON中的数据?我缺少任何配置吗?
即使在PutFile处理器上,我也看不到json数据已更改。
谢谢 是的
答案 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处理器的更多详细信息/用法。