共用方式為


轉換數據處理者管線中的數據

重要

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

當正式發行可供使用時,您將需要部署新的 Azure IoT 作業安裝,您將無法升級預覽安裝。

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

使用轉換階段,對管線中的訊息執行結構轉換,例如:

  • 重新命名標籤和屬性
  • 取消批次處理資料
  • 新增屬性
  • 新增導出值

轉換階段會使用 jq 來支援資料轉換:

  • 每個管線分割區會彼此獨立轉換訊息。
  • 階段會根據您提供的 jq 運算式輸出轉換的訊息。
  • 建立 jq 運算式,根據傳入訊息的結構將訊息轉換成階段。

必要條件

若要設定並使用轉換管線階段,您需要:

  • 包含選擇性數據處理者元件的已部署數據處理者實例。
  • 了解 jq 運算式

設定階段

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

名稱 必要 範例
名稱 要顯示在數據處理者 UI 中的名稱。 Yes Transform1
描述 轉換階段執行之用途的使用者易記描述。 No Rename Tags
查詢 轉換 jq 運算式 Yes .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

範例設定

下列轉換範例會將輸入訊息中的標記陣列轉換成物件,其中包含所有標記及其值:

{
    "displayName": "TransformInput", 
    "description": "Make array of tags into one object", 
    "query": ".payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)"
}

來自轉換階段的輸出看起來如下列範例所示:

{
  "systemProperties": {
    "partitionKey": "foo",
    "partitionId": 5,
    "timestamp": "2023-01-11T10:02:07Z"
  },
  "qos": 1,
  "topic": "/assets/foo/tags/bar",
  "properties": {
    "responseTopic": "outputs/foo/tags/bar",
    "contentType": "application/json",
    "payloadFormat": 1,
    "correlationData": "base64::Zm9v",
    "messageExpiry": 412
  },
  "userProperties": [
    {
      "key": "prop1",
      "value": "value1"
    },
    {
      "key": "prop2",
      "value": "value2"
    }
  ],
  "payload": {
    "values": {
      "temperature": 250,
      "pressure": 30,
      "humidity": 10,
      "runningStatus": true
    }
  }
}