首页 文章

NiFi SplitJSON和ExecuteSQL

提问于
浏览
3

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

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

enter image description here

  • GenerateFlowFile 处理器,JSON结构为 Custom Text

enter image description here

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

enter image description here

  • ExecuteSQL ,带有我正在尝试执行的查询,使用 SplitJSON's payload属性 ${id}

enter image description here

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

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

1 回答

  • 3

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

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

    EvaluateJsonPath processor with custom property

相关问题