NiFi SplitJSON和ExecuteSQL

时间:2017-07-18 16:23:10

标签: apache-nifi

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

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

enter image description here

  1. GenerateFlowFile处理器,JSON结构为Custom Text
  2. enter image description here

    1. SplitJSON,数据作为要拆分的属性
    2. enter image description here

      1. ExecuteSQL,使用SplitJSON's有效内容属性${id}
      2. 查看我尝试执行的查询

        enter image description here

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

        分割JSON后还有什么中间处理要做吗?我错过了什么?

1 个答案:

答案 0 :(得分:4)

EvaluateJsonPathExtractText之间需要额外的SplitJson(或ExecuteSQL)处理器 - 表达式语言表达式无法评估参数替换的流文件内容,因此您的SQL表达式最终为SELECT * FROM foo WHERE id = ;,这就是您遇到语法错误的原因。

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

EvaluateJsonPath processor with custom property