在NiFi流程中,我想读取JSON结构,拆分它,使用有效负载执行SQL查询,最后将每个结果输出到JSON文件中 .
但是,我在检索 ExecuteSQL
处理器中拆分的FlowFile属性的值时遇到问题 .
GenerateFlowFile
处理器,JSON结构为Custom Text
SplitJSON
,将数据作为要拆分的属性
ExecuteSQL
,带有我正在尝试执行的查询,使用SplitJSON's
payload属性${id}
此时我收到SQL语法错误的日志错误 . 显然 ExecuteQuery
处理器没有在其 SQL select query
属性上解析表达式 .
分割JSON后还有什么中间处理要做吗?我错过了什么?
1 回答
在
SplitJson
和_1519501之间需要一个额外的EvaluateJsonPath
(或ExtractText
)处理器 - 表达式语言表达式无法评估参数替换的流文件内容,因此SQL表达式最终为SELECT * FROM foo WHERE id = ;
,这就是语法错误的原因 .表达式语言从flowfile属性读取,因此您需要将JSON内容解析为可访问的属性 .
EvaluateJsonPath
处理器就是这样做的 . 您需要做的就是添加一个自定义属性(单击属性对话框右上角的+
)并将JSON中的id
值提取到一个flowfile属性中 . 然后将matched
关系从此处理器连接到ExecuteSQL
处理器 .