2017-07-18 193 views
2

在NiFi流程中,我想要讀取JSON結構,將其拆分,使用有效內容執行SQL查詢,最後將每個結果輸出到JSON文件中。NiFi SplitJSON和ExecuteSQL

但是,我在檢索ExecuteSQL處理器中拆分的FlowFile屬性的值時遇到問題。

enter image description here

  1. GenerateFlowFile處理器,具有JSON結構Custom Text

enter image description here

  • SplitJSON,具有數據作爲屬性被分裂
  • enter image description here

  • ExecuteSQL,與查詢我試圖執行使用SplitJSON's有效載荷屬性${id}
  • enter image description here

    此時我正在SQL語法錯誤的日誌錯誤。顯然ExecuteQuery處理器不解析其SQL select query屬性上的表達式。

    在拆分JSON之後是否還有任何中間處理需要完成?我錯過了什麼?

    回答

    3

    你需要SplitJsonExecuteSQL之間的附加EvaluateJsonPath(或ExtractText)處理器 - 表達式語言表達無法評估參數替代的flowfile內容,讓你的SQL表達式最終被SELECT * FROM foo WHERE id = ;這就是爲什麼你有一個語法錯誤。

    表達式語言從flowfile屬性讀取,因此您需要將JSON內容解析爲可訪問的屬性。 EvaluateJsonPath處理器正是如此。您只需添加一個定製屬性(單擊屬性對話框右上角的+),然後將JSON中的id值提取到flowfile屬性中。然後將來自此處理器的matched關係連接到ExecuteSQL處理器。

    EvaluateJsonPath processor with custom property

    +0

    啊缺少的環節。謝謝你的時間,就是這樣。 – TMichel