篩選 Azure IoT 數據處理器預覽管線中的數據

重要

Azure IoT Operations Preview – 由 Azure Arc 啟用目前處於預覽狀態。 您不應該在生產環境中使用此預覽軟體。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

使用篩選階段來篩選出您不需要在管線中進一步處理的訊息。 如果符合篩選準則,階段會將原始訊息發出至篩選階段不變,否則階段會從管線卸除訊息。

  • 每個管線數據分割都會篩選出與其他分割區無關的訊息。
  • 如果階段未篩選出,篩選階段的輸出就是原始訊息。

必要條件

若要設定及使用篩選管線階段,您需要已部署的 Azure IoT 數據處理器預覽實例。

設定階段

篩選階段 JSON 組態會定義階段的詳細數據。 若要撰寫階段,您可以與窗體型 UI 互動,或在 [ 進階 ] 索引卷標上提供 JSON 設定:

名稱 必要 預設 範例
Display name 要顯示在數據處理器 UI 中的名稱。 Yes - Filter1
描述 篩選階段執行之用途的用戶易記描述。 No - Filter out anomalies
查詢 jq 運算式 Yes - .payload.temperature > 0 and .payload.pressure < 50

jq 運算式

資料處理器中的篩選查詢會使用 jq 語言來定義篩選條件:

  • 查詢中提供的 jq 必須語法有效。
  • 篩選查詢的結果必須是布爾值。
  • 評估為 true 的訊息會從篩選階段未變更發出至後續階段,以便進一步處理。 評估為 false 的訊息會從管線卸除。
  • 篩選不會傳回布爾結果的所有訊息都會被視為錯誤案例,並從管線卸除。
  • 篩選階段遵循 jq 運算式指南中所 定義之 jq 使用量的相同限制。

當您建立篩選查詢以用於篩選階段時:

  • 使用訊息測試篩選查詢,以確定傳回布爾結果。
  • 根據訊息到達篩選階段的方式設定篩選查詢。
  • 若要深入瞭解如何建置篩選表達式,請參閱jq 表達式 指南。

範例設定

下列 JSON 範例顯示完整的篩選階段設定:

{ 
    "displayName": "Filter name", 
    "description": "Filter description", 
    "query": "(.properties.responseTopic | contains(\"bar\")) or (.properties.responseTopic | contains(\"baz\")) and (.payload | has(\"temperature\")) and (.payload.temperature > 0)"
}

這個篩選會檢查包含 或和訊息承載的訊息.properties.responseTopic是否有名為 且值大於 0的屬性temperaturebazbar