Teilen über


Transformieren von Daten in einer Datenverarbeitungspipeline

Wichtig

Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Sie müssen eine neue Azure IoT Operations-Installation bereitstellen, wenn eine allgemein verfügbare Version verfügbar ist, können Sie keine Vorschauinstallation aktualisieren.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Verwenden Sie die Transformationsphase, um strukturelle Transformationen an Nachrichten in einer Pipeline vorzunehmen, z. B:

  • Umbenennen von Tags und Eigenschaften
  • Aufheben der Batchverarbeitung für Daten
  • Hinzufügen neuer Eigenschaften
  • Hinzufügen berechneter Werte

Die Transformationsphase verwendet jq, um die Datentransformation zu unterstützen:

  • Jede Pipelinepartition transformiert Nachrichten unabhängig von anderen.
  • Die Phase gibt eine transformierte Nachricht basierend auf dem von Ihnen bereitgestellten jq-Ausdruck aus.
  • Erstellen Sie einen jq-Ausdruck, um eine Nachricht basierend auf der Struktur der eingehenden Nachricht in die Phase zu transformieren.

Voraussetzungen

Um eine Transformationspipelinephase zu konfigurieren und zu verwenden, benötigen Sie Folgendes:

  • Eine bereitgestellte Instanz des Datenauftragsverarbeiters, die die optionale Datenverarbeitungskomponente enthält.
  • Ein Verständnis von jq-Ausdrücken.

Konfigurieren der Phase

Die JSON-Konfiguration der Transformationsphase definiert die Details der Phase. Um die Phase zu erstellen, können Sie entweder mit der formularbasierten Benutzeroberfläche interagieren oder die JSON-Konfiguration auf der Registerkarte Erweitert bereitstellen.

Name Wert Erforderlich Beispiel
Name Ein Name, der in der Datenverarbeitungsoberfläche angezeigt werden soll. Ja Transform1
Beschreibung Eine benutzerfreundliche Beschreibung der Funktionsweise der Transformationsphase. Nein Rename Tags
Abfrage Der jq-Ausdruck der Transformation. Ja .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Beispielkonfiguration

Im folgenden Transformationsbeispiel wird das Array von Tags in der Eingabenachricht in ein Objekt konvertiert, das alle Tags und deren Werte enthält:

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

Die Ausgabe der Transformationsphase sieht wie im folgenden Beispiel aus:

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