Dela via


Transformera data i en azure IoT Data Processor Preview-pipeline

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

Använd transformeringssteget för att utföra strukturella omvandlingar på meddelanden i en pipeline, till exempel:

  • Byt namn på taggar och egenskaper
  • Ta bortbatchdata
  • Lägga till nya egenskaper
  • Lägga till beräknade värden

Transformeringssteget använder jq för att stödja datatransformering:

  • Varje pipelinepartition omvandlar meddelanden oberoende av varandra.
  • Fasen matar ut ett transformerat meddelande baserat på det jq-uttryck som du anger.
  • Skapa ett jq-uttryck för att transformera ett meddelande baserat på strukturen för det inkommande meddelandet till fasen.

Förutsättningar

För att konfigurera och använda en transformeringspipelinefas behöver du:

  • En distribuerad instans av Azure IoT Data Processor Preview som innehåller den valfria dataprocessorkomponenten.
  • En förståelse för jq-uttryck.

Konfigurera fasen

JSON-konfigurationen för transformeringssteget definierar detaljerna i fasen. Om du vill skapa fasen kan du antingen interagera med det formulärbaserade användargränssnittet eller ange JSON-konfigurationen på fliken Avancerat :

Name Värde Obligatoriskt Exempel
Name Ett namn som ska visas i användargränssnittet för dataprocessorn. Ja Transform1
beskrivning En användarvänlig beskrivning av vad transformeringssteget gör. Nej Rename Tags
Fråga Transformerings-jq-uttrycket. Ja .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Exempelkonfiguration

I följande transformeringsexempel konverteras matrisen med taggar i indatameddelandet till ett objekt som innehåller alla taggar och deras värden:

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

Utdata från transformeringssteget ser ut som i följande exempel:

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