Teilen über


Erstellen eines Dataflows

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 Installation von Azure IoT Einsatz bereitstellen, wenn ein allgemein verfügbares Release verfügbar ist. Sie können keine Installation der Vorschauversion upgraden.

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.

Ein Datenfluss ist der Pfad, den Daten von der Quelle zum Ziel mit optionalen Transformationen nehmen. Sie können den Datenfluss mithilfe des Azure IoT Einsatz-Portals konfigurieren oder eine benutzerdefinierte Datenflussressource erstellen. Bevor Sie einen Datenfluss erstellen, müssen Sie Datenflussendpunkte für die Datenquellen und -ziele konfigurieren.

Im Folgenden sehen Sie ein Beispiel für eine Datenflusskonfiguration mit einem MQTT-Quellendpunkt, Transformationen und einem Kafka-Zielendpunkt:

apiVersion: connectivity.iotoperations.azure.com/v1beta1
kind: Dataflow
metadata:
  name: my-dataflow
spec:
  profileRef: my-dataflow-profile
  mode: enabled
  operations:
    - operationType: source
      name: my-source
      sourceSettings:
        endpointRef: mq
        dataSources:
          - thermostats/+/telemetry/temperature/#
          - humidifiers/+/telemetry/humidity/#
        serializationFormat: json
    - operationType: builtInTransformation
      name: my-transformation
      builtInTransformationSettings:
        filter:
          - inputs:
              - 'temperature.Value'
              - '"Tag 10".Value'
            expression: "$1*$2<100000"
        map:
          - inputs:
              - '*'
            output: '*'
          - inputs:
              - temperature.Value
            output: TemperatureF
            expression: cToF($1)
          - inputs:
              - '"Tag 10".Value'
            output: 'Tag 10'
        serializationFormat: json
    - operationType: destination
      name: my-destination
      destinationSettings:
        endpointRef: kafka
        dataDestination: factory
Name Beschreibung
profileRef Verweis auf das Datenflussprofil
Modus Modus des Datenflusses, aktiviert oder deaktiviert
operations[] Vom Datenfluss ausgeführte Vorgänge
operationType Typ des Vorgangs, source, destination, oder builtInTransformation

In den folgenden Abschnitten erfahren Sie, wie Sie die Vorgangstypen des Datenflusses konfigurieren.

Konfigurieren der Quelle

Um eine Quelle für den Datenfluss zu konfigurieren, geben Sie den Endpunktverweis und die Datenquelle an. Sie können eine Liste der Datenquellen für den Endpunkt angeben. Zum Beispiel MQTT- oder Kafka-Themen. Nachfolgend sehen Sie ein Beispiel für eine Datenflusskonfiguration mit einem Quellendpunkt und einer Datenquelle.

apiVersion: connectivity.iotoperations.azure.com/v1beta1
kind: Dataflow
metadata:
  name: mq-to-kafka
  namespace: azure-iot-operations
spec:
  profileRef: example-dataflow
  operations:
    - operationType: source
      sourceSettings:
        endpointRef: mq-source
        dataSources:
        - azure-iot-operations/data/thermostat
Name Beschreibung
operationType Quelle
sourceSettings Einstellungen für den source-Vorgang
sourceSettings.endpointRef Verweisen auf den source-Endpunkt
sourceSettings.dataSources Datenquellen für den source-Vorgang. Die Platzhalterzeichen (# und +) werden unterstützt.

Konfigurieren der Transformation

Mit dem Transformationsvorgang können Sie die Daten aus der Quelle transformieren, bevor Sie sie an das Ziel senden. Transformationen sind optional. Wenn Sie keine Änderungen an den Daten vornehmen müssen, schließen Sie den Transformationsvorgang nicht in die Datenflusskonfiguration ein. Mehrere Transformationen werden in Phasen verkettet, unabhängig von der Reihenfolge, in der sie in der Konfiguration angegeben sind.

spec:
  operations:
  - operationType: builtInTransformation
    name: transform1
    builtInTransformationSettings:
      datasets:
        # ...
      filter:
        # ...
      map:
        # ...
Name Beschreibung
operationType builtInTransformation
name Name der Transformation
builtInTransformationSettings Einstellungen für den builtInTransformation-Vorgang
builtInTransformationSettings.datasets Hinzufügen weiterer Daten zu den Quelldaten, die einem Dataset und einer Bedingung entsprechen
builtInTransformationSettings.filter Filtern der Daten basierend auf einer Bedingung
builtInTransformationSettings.map Verschieben von Daten aus einem Feld in ein anderes mit optionaler Konvertierung

Anreichern: Hinzufügen von Verweisdaten

Um die Daten anzureichern, können Sie ein Verweisdataset im verteilten Zustandsspeicher (Distributed State Store, DSS) von Azure IoT Einsatz verwenden. Das Dataset wird verwendet, um zusätzliche Daten zu den Quelldaten basierend auf einer Bedingung hinzuzufügen. Die Bedingung wird als Feld in den Quelldaten angegeben, die einem Feld im Dataset entsprechen.

Name Beschreibung
builtInTransformationSettings.datasets.key Dataset zur Anreicherung (Schlüssel in DSS)
builtInTransformationSettings.datasets.expression Bedingung für den Anreicherungsvorgang

Sie können z. B. das Feld deviceId in den Quelldaten verwenden, damit es dem Feld asset im Dataset entspricht:

spec:
  operations:
  - operationType: builtInTransformation
    name: transform1
    builtInTransformationSettings:
      datasets:
      - key: assetDataset
        inputs:
          - $source.deviceId # ------------- $1
          - $context(assetDataset).asset # - $2
        expression: $1 == $2

Wenn das Dataset über einen Datensatz mit dem Feld asset verfügt, ähnelt es Folgendem:

{
  "asset": "thermostat1",
  "location": "room1",
  "manufacturer": "Contoso"
}

Die Daten aus der Quelle mit dem deviceId-Feld, das dem thermostat1 entspricht, verfügen über die Felder location und manufacturer, die in den Phasen filter und map verfügbar sind.

Sie können Beispieldaten in den verteilten Zustandsspeicher (DSS) laden, indem Sie das DSS-Toolbeispiel verwenden.

Weitere Informationen zur Bedingungssyntax finden Sie unter Anreichern von Daten mithilfe von Datenflüssen und Konvertieren von Daten mithilfe von Datenflüssen.

Filter: Filtern von Daten basierend auf einer Bedingung

Um die Daten nach einer Bedingung zu filtern, können Sie die filter-Phase verwenden. Die Bedingung wird als Feld in den Quelldaten angegeben, die einem Wert entsprechen.

Name Beschreibung
builtInTransformationSettings.filter.inputs[] Eingaben zum Auswerten einer Filterbedingung
builtInTransformationSettings.filter.expression Bedingung für die Filterauswertung

Sie können z. B. das Feld temperature in den Quelldaten verwenden, um die Daten zu filtern:

spec:
  operations:
  - operationType: builtInTransformation
    name: transform1
    builtInTransformationSettings:
      filter:
        - inputs:
          - temperature ? $last # - $1
          expression: "$1 > 20"

Wenn das Feld temperature größer als 20 ist, werden die Daten an die nächste Phase übergeben. Wenn das Feld temperature kleiner oder gleich 20 ist, werden die Daten gefiltert.

Zuordnung: Verschieben von Daten aus einem Feld in ein anderes

Um die Daten einem anderen Feld mit optionaler Konvertierung zuzuordnen, können Sie den map-Vorgang verwenden. Die Konvertierung wird als Formel angegeben, die die Felder in den Quelldaten verwendet.

Name Beschreibung
builtInTransformationSettings.map[].inputs[] Eingaben für den Zuordnungsvorgang
builtInTransformationSettings.map[].output Ausgabefeld für den Zuordnungsvorgang
builtInTransformationSettings.map[].expression Konvertierungsformel für den Zuordnungsvorgang

Sie können beispielsweise das Feld temperature in den Quelldaten verwenden, um die Temperatur in Celsius zu konvertieren und im Feld temperatureCelsius zu speichern. Sie können die Quelldaten auch mit dem Feld location aus dem Kontextualisierungsdataset anreichern:

spec:
  operations:
  - operationType: builtInTransformation
    name: transform1
    builtInTransformationSettings:
      map:
        - inputs:
          - temperature # - $1
          output: temperatureCelsius
          expression: "($1 - 32) * 5/9"
        - inputs:
          - $context(assetDataset).location  
          output: location

Weitere Informationen finden Sie unter Zuordnen von Daten mithilfe von Datenflüssen und Konvertieren von Daten mithilfe von Datenflüssen.

Konfigurieren des Ziels

Um ein Ziel für den Datenfluss zu konfigurieren, müssen Sie den Endpunkt und einen Pfad (Thema oder Tabelle) für das Ziel angeben.

Name Beschreibung
destinationSettings.endpointRef Verweis auf den destination-Endpunkt (Zielendpunkt)
destinationSettings.dataDestination Ziel für die Daten

Konfigurieren des Zielendpunktverweises

Um den Endpunkt für das Ziel zu konfigurieren, müssen Sie die ID und den Endpunktverweis angeben.

spec:
  operations:
  - operationType: destination
    name: destination1
    destinationSettings:
      endpointRef: eventgrid

Konfigurieren des Zielpfads

Sobald Sie den Endpunkt haben, können Sie den Pfad für das Ziel konfigurieren. Wenn es sich bei dem Ziel um einen MQTT- oder Kafka-Endpunkt handelt, verwenden Sie den Pfad, um das Thema anzugeben.

- operationType: destination
  destinationSettings:
    endpointRef: eventgrid
    dataDestination: factory

Verwenden Sie für Speicherendpunkte wie Microsoft Fabric den Pfad, um den Tabellennamen anzugeben.

- operationType: destination
  destinationSettings:
    endpointRef: adls
    dataDestination: telemetryTable