共用方式為


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

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

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

篩選階段可用於在管線中篩選出無須進一步處理的訊息。 若符合篩選條件,階段會將原始訊息原封不動發送至篩選階段,否則訊息將會從管線中刪除。

  • 各個管線分割區可不受其他分割區影響,獨立篩選訊息。
  • 若階段中並未篩選出訊息,則篩選階段的輸出即為原始訊息。

必要條件

若要設定及使用篩選管線階段,您需要已部署的 Azure IoT 數據處理器預覽實例,其中包含選擇性的數據處理者元件。

設定階段

篩選階段 JSON 設定負責定義階段的詳細資料。 若要編寫階段,可透過與表單架構使用者介面互動,或在 [進階] 索引標籤上提供 JSON 設定:

名稱 必要 預設 範例
Display name 用於顯示在資料處理器使用者介面中的名稱。 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 中包含 barbaz 的訊息,且訊息承載具有名為 temperature 且值大於 0 的屬性。