Sdílet prostřednictvím


Transformace dat v kanálu zpracovatele dat

Důležité

Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi PREVIEW. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.

Pokud je dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT, nebudete moct upgradovat instalaci ve verzi Preview.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Pomocí fáze transformace můžete provádět strukturální transformace zpráv v kanálu, například:

  • Přejmenování značek a vlastností
  • Unbatch data
  • Přidání nových vlastností
  • Přidání počítaných hodnot

Fáze transformace používá jq k podpoře transformace dat:

  • Každý oddíl kanálu transformuje zprávy nezávisle na sobě.
  • Fáze vypíše transformovanou zprávu na základě zadaného výrazu jq.
  • Vytvořte výraz jq, který transformuje zprávu na základě struktury příchozí zprávy do fáze.

Požadavky

Pokud chcete nakonfigurovat a použít fázi kanálu transformace, potřebujete:

  • Nasazená instance zpracovatele dat, která zahrnuje volitelnou součást zpracovatele dat.
  • Pochopení výrazů jq

Konfigurace fáze

Konfigurace JSON fáze transformace definuje podrobnosti fáze. Pokud chcete fázi vytvořit, můžete pracovat s uživatelským rozhraním založeným na formuláři nebo zadat konfiguraci JSON na kartě Upřesnit :

Jméno Hodnota Požaduje se Příklad
Název Název, který se má zobrazit v uživatelském rozhraní zpracovatele dat. Ano Transform1
Popis Uživatelsky přívětivý popis toho, co fáze transformace dělá. No Rename Tags
Dotaz Výraz jq transformace. Ano .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Vzorová konfigurace

Následující příklad transformace převede pole značek ve vstupní zprávě na objekt, který obsahuje všechny značky a jejich hodnoty:

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

Výstup z fáze transformace vypadá jako v následujícím příkladu:

{
  "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
    }
  }
}