NiFi SplitJSON和ExecuteSQL

TMi*_*hel 3 apache-nifi

在NiFi流程中,我想读取JSON结构,将其拆分,使用有效负载执行SQL查询,最后将每个结果输出到JSON文件中。

但是,我在检索ExecuteSQL处理器中拆分后的FlowFile属性值时遇到问题。

在此处输入图片说明

  1. GenerateFlowFile 处理器,JSON结构为 Custom Text

在此处输入图片说明

  1. SplitJSON,将数据作为要拆分的属性

在此处输入图片说明

  1. ExecuteSQL,使用SplitJSON's有效负载属性,通过我尝试执行的查询${id}

在此处输入图片说明

此时,我收到了SQL语法错误的日志错误。显然,ExecuteQuery处理器没有解析其SQL select query属性上的表达式。

拆分JSON之后是否还有任何中间处理要完成?我想念什么?

And*_*ndy 5

您需要在和之间添加一个EvaluateJsonPath(或ExtractText)处理器-表达式语言表达式无法评估流文件的内容以进行参数替换,因此您的SQL表达式最终成为了语法错误的原因。SplitJsonExecuteSQLSELECT * FROM foo WHERE id = ;

表达式语言从flowfile属性读取,因此您需要将JSON内容解析为可访问的属性。该EvaluateJsonPath处理器正是这样做的。您需要做的就是添加一个自定义属性(单击+属性对话框右上角的),然后id将JSON中的值提取到flowfile属性中。然后将matched关系从该处理器连接到ExecuteSQL处理器。

具有自定义属性的EvaluateJsonPath处理器