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