Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Datenflussgraph ist eine konfigurierbare Pipeline, die Daten verarbeitet, während sie sich durch Azure IoT Einsatz bewegen. Ein Standard-Datenfluss folgt einer festen Enrich-, Filter- und Map-Sequenz, aber ein Datenflussgraph erlaubt es, Transformationen in beliebiger Reihenfolge zu komponieren, in parallele Pfade zu verzweigen und Daten über Zeitfenster zu aggregieren.
Die benutzerdefinierte DataflowGraph Kubernetes-Ressource definiert einen Datenflussgraphen. Innerhalb der Ressource verbindest du Quellen, Transformationen und Ziele, um Verarbeitungspipelines zu erstellen, die zu deiner Situation passen.
Von Bedeutung
Datenflussdiagramme unterstützen derzeit nur MQTT-, Kafka- und OpenTelemetry-Endpunkte. Andere Endpunkttypen wie Data Lake, Microsoft Fabric OneLake, Azure Data Explorer und lokaler Speicher werden nicht unterstützt.
Datenflüsse im Vergleich zu Datenflussdiagrammen
Azure IoT Einsatz bietet zwei Möglichkeiten zum Verarbeiten von Daten in einer Pipeline:
| Fähigkeit | Datenflüsse | Datenflussdiagramme |
|---|---|---|
| Pipeline-Form | Behoben: Anreicherung, Filter, Karte | Flexibel: beliebige Reihenfolge, Verzweigung, Zusammenführung |
| Transformationstypen | Karte, Filter, Anreicherung | Zuordnung, Filter, Verzweigung, Verkettung, Fenster, Drosselung, Anreicherung |
| Zeitbasierte Aggregation | Nicht verfügbar | Fenstertransformationen mit gleitenden Fenstern |
| Bedingtes Routing | Nicht verfügbar | Verzweigung und Verketten von Transformationen |
| Endpunktunterstützung | Alle Endpunkttypen | NUR MQTT, Kafka und OpenTelemetry |
Für neue Projekte, die unterstützte Endpunkttypen verwenden, empfehlen wir Datenflussdiagramme. Datenflüsse werden für alle Szenarien vollständig unterstützt, und sie unterstützen die gesamte Bandbreite von Endpunkttypen.
Verfügbare Transformationen
Jede Transformation ist ein vorgefertigter Verarbeitungsschritt, den du mit Regeln konfigurierst und mit anderen Transformationen innerhalb einer DataflowGraph Ressource verkettest.
| Umwandeln | Artefakt | Description |
|---|---|---|
| Landkarte | azureiotoperations/graph-dataflow-map:1.0.0 |
Umbenennen, Neustrukturieren, Berechnen und Kopieren von Feldern. |
| Filter | azureiotoperations/graph-dataflow-filter:1.0.0 |
Verwerfen Sie Nachrichten, die einer Bedingung entsprechen. |
| Filiale | azureiotoperations/graph-dataflow-branch:1.0.0 |
Leiten Sie jede Nachricht basierend auf einer Bedingung an einen true- oder false-Pfad weiter. |
| Concatenate | azureiotoperations/graph-dataflow-concatenate:1.0.0 |
Führen Sie zwei oder mehr Pfade wieder in einem Pfad zusammen. |
| Fenster | azureiotoperations/graph-dataflow-window:1.0.0 |
Sammeln Sie Nachrichten über ein Zeitintervall, und aggregieren Sie dann. |
| Drosselung | azureiotoperations/graph-dataflow-throttle:1.0.0 |
Begrenze die Nachrichtenrate pro MQTT-Themenmuster. |
Alle Transformationen teilen eine Ausdruckssprache für Operatoren, Funktionen und Feldverweise. Sie können Nachrichten auch mit externen Daten aus einem Zustandsspeicher in Karten-, Filter- und Verzweigungstransformationen anreichern .
Tip
Ausdrücke verwenden Positionsvariablen, also $1 ist die erste Eingabe $2 , die zweite und so weiter. Die Expressions-Referenz listet eingebaute Funktionen wie und cToF deckt jeden Operator, jede Funktion und jedes Metadatenfeld ab, das Transformationen zur Verfügung steht.
Wie Transformationen in einem Datenflussgraphen zusammengesetzt werden
Transformationen verbinden sich in Sequenz innerhalb einer DataflowGraph Ressource: Quelle > Transformation A > Transformation B > ... > Ziel.
Verzweigungstransformationen teilen den Fluss in parallele Pfade auf und Zusammenführungstransformationen fügen sie wieder zusammen.
Sie können eine beliebige Anzahl von Transformationen in beliebiger Reihenfolge verketten. Eine Pipeline mit einer einzigen Map-Transformation ist genauso gültig wie eine, die filtert, verzweigt, jeden Pfad unterschiedlich abbildet, zusammenführt und dann über ein Zeitfenster aggregiert.
Wie die Konfiguration von Datenflussdiagrammen funktioniert
Jede Transformation in einem Datenflussgraphen bezieht sich auf ein vorgefertigtes Artefakt, das aus einer Container-Registry stammt. Sie konfigurieren die Transformation, indem Sie Regeln als JSON über den configuration Abschnitt der Graph-Ressource übergeben.
Wenn Sie Azure IoT Einsatz bereitstellen, erstellt es automatisch einen Standard-Registry-Endpunkt namens default , der auf mcr.microsoft.comverweist. Die integrierten Transformationen verwenden diesen Endpunkt, um Artefakte aus der Microsoft Container-Registrierung abzurufen. Du brauchst keine zusätzliche Registry-Einrichtung.
Eine Datenflussgraph-Ressource definiert drei Arten von Elementen – eine Quelle, eine oder mehrere Transformationen (jeweils mit nodeType: Graph), und ein Ziel – und eine Menge davon nodeConnections , die beschreiben, wie Daten zwischen ihnen fließen. Jede Transformation configuration übergibt ihre Regeln als JSON-String unter dem rules Schlüssel.
Ein vollständiges, lauffähiges Beispiel, das Temperaturdaten liest, Celsius mit einer Map-Transformation in Fahrenheit umwandelt und das Ergebnis veröffentlicht – in der Operations-Erfahrung, Azure CLI, Bicep und Kubernetes – siehe Create a Data Flow Graph. In den folgenden Anleitungsartikeln konzentrieren sich Beispiele auf die Transformationsregeln selbst.
Schemata auf Knotenverbindungen konfigurieren
Datenflussgraphen behandeln Schemata anders als Datenflüsse. Anstatt das Schema für die Quelle oder Transformation festzulegen, konfigurieren Sie Schemas für die Knotenverbindungen zwischen Knoten im Diagramm. Verzweigungs- und Filtertransformationen können optional Laufzeitdaten gegen Schemata validieren, die an Knotenverbindungen angehängt sind.
Jeder Eintrag im nodeConnections Array kann auf der from Seite einer Verbindung ein schema A enthalten. Dieses Schema beschreibt das erwartete Format der Daten, die zwischen diesen beiden Knoten fließen:
nodeConnections: [
{
from: {
name: 'source'
schema: {
schemaRef: 'aio-sr://my-namespace/sensor-data:1'
serializationFormat: 'Json'
}
}
to: {
name: 'transform'
}
}
]
Der Wert schemaRef verwendet das Format aio-sr://<namespace>/<name>:<version> und verweist auf ein Schema, das im Schema-Register gespeichert ist. Da Datenflussgraphen nur MQTT-, Kafka- und OpenTelemetrie-Endpunkte unterstützen, ist Jsondas unterstützte Serialisierungsformat .
Die folgende Tabelle fasst zusammen, wie sich die Schemakonfiguration zwischen Datenströmen und Datenflussgraphen unterscheidet:
| Aspect | Datenflüsse | Datenflussdiagramme |
|---|---|---|
| Schema-Standort | Auf der Quelle (sourceSettings.schemaRef) und Transformation (builtInTransformationSettings.schemaRef) |
Bei Knotenverbindungen (nodeConnections[].from.schema) |
| Unterstützte Zielformate | JSON, Parquet, Delta | JSON |
| Laufzeitvalidierung | Nicht unterstützt für Quellschemata | Optionale Verbindungen auf den Knoten durch Verzweigungs- und Filtertransformationen |
Note
Für Datenflussgraphen ist JSON derzeit das einzige unterstützte Zielformat, trotz der in der REST API-Referenzdokumentation aufgeführten Formate.
Für Definitionen von Nachrichtenschemata, Formaten und wie man Schemata hochlädt, siehe Verstehen von Nachrichtenschemata.
Integrierte Transformationen im Vergleich zu WASM-Transformationen
Datenflussdiagramme unterstützen zwei Arten von Transformationen:
- Integrierte Transformationen sind von Microsoft vordefiniert (Zuordnung, Filter, Verzweigung, Verkettung, Fenster, Drosselung). Sie konfigurieren sie mit Regeln. Keine Codierung erforderlich.
- WASM-Transformationen sind benutzerdefinierte WebAssembly-Module, die Entwickler erstellen und bereitstellen. Verwenden Sie sie, wenn Sie Logik benötigen, die von den integrierten Transformationen nicht abgedeckt wird.
Beide Arten von Transformationen laufen innerhalb derselben DataflowGraph Ressource, und man kann sie in einer einzigen Pipeline mischen. Informationen zum Erstellen und Bereitstellen von benutzerdefinierten Transformationen finden Sie unter Verwenden von WASM-Transformationen in Datenflussdiagrammen.
Fehlerbehandlung in Datenflussgraphen
Wenn eine Transformation während der Verarbeitung einer Nachricht auf einen Fehler stößt (zum Beispiel ein fehlendes Feld oder ein ungültiger Ausdruck), lässt die Transformation die Nachricht fallen und meldet einen Fehler. Die Pipeline verarbeitet weiterhin nachfolgende Nachrichten.
Häufige Ursachen von Verarbeitungsfehlern:
- In der Nachricht ist kein Feld vorhanden, auf das in einer Regel
inputsverwiesen wird. - Ein Filter- oder Verzweigungsausdruck gibt einen nicht booleschen Wert zurück.
- Ein Ausdruck bezieht sich auf einen inkompatiblen Datentyp (zum Beispiel ein JSON-Objekt in der Arithmetik).
- Ein Zustandsspeicher, der für die Anreicherung verwendet wird, ist nicht erreichbar.
Um Verarbeitungsfehler zu überwachen, überprüfen Sie die Pod-Protokolle auf den Datenflussgraphen oder verwenden Sie die Metrik-Endpunkte. Weitere Informationen finden Sie unter Configure observability and monitoring.
Skalierungsbeschränkung für zustandsbehaftete Diagramme
Von Bedeutung
Fenster- und Gashebel-Transformationen sind zustandsvoll. Jede Instanz behält ihren eigenen Zustand, und Instanzen teilen diesen Zustand nicht miteinander. Wenn die Anzahl der Instanzen im Datenflussprofil größer als eins ist, verteilen geteilte Abonnements Nachrichten über die Instanzen, sodass jede Instanz nur eine Teilmenge der Nachrichten sieht. Eine Fenstertransformation berechnet dann Aggregationen wie Durchschnitte, Summen und Zählungen über einen partiellen Datensatz, und eine Throttle-Transformation setzt die konfigurierte Ratenbegrenzung unabhängig in jeder Instanz durch, anstatt über die gesamte Pipeline hinweg.
Setze die Anzahl der Datenflussprofil-Instanzen für jeden Datenflussgraphen, der eine Fenster- oder Throttle-Transformation verwendet, auf 1 . Zustandslose Datenflussgraphen, die ausschließlich Mapping-, Filter-, Verzweigungs- und Concatenate-Transformationen verwenden, können sicher höhere Instanzzahlen nutzen, um den Durchsatz zu erhöhen.
Leistungsanleitung für Datenflussdiagramme
Jede Transformation in der Pipeline erhöht den Verarbeitungsaufwand. Beachten Sie die folgenden Richtlinien:
- Bevorzugen Sie weniger Transformationen mit mehr Regeln. Wenn Sie über viele Transformationsregeln verfügen, die mit derselben Struktur arbeiten, sollten Sie sie in einer einzelnen Map-Transformation zusammenfassen, anstatt separate Transformationen für jede Regel zu erstellen.
- Verwenden Sie mehrere Transformationen, wenn die Logik voneinander getrennt ist. Separate Transformationen sind sinnvoll, wenn unterschiedliche Verarbeitungsschritte grundsätzlich unterschiedlich sind (Filterung und Zuordnung im Vergleich zur Aggregierung).
- Halten Sie verwandte Regeln zusammen. Eine einzelne Transformation kann gleichzeitig Feldumbenennungen, Umstrukturierungen, berechnete Felder und Metadatentransformationen verarbeiten.
Verwandte Inhalte
- Datenflüsse im Vergleich zu Datenflussdiagrammen
- Erstellen eines Datenflussdiagramms
- Transformieren von Daten mit Karte
- Filtern und Weiterleiten von Daten
- Aggregieren von Daten im Laufe der Zeit
- Anreichern mit externen Daten
- Throttle-Daten
- Weiterleiten von Nachrichten an verschiedene Themen
- Ausdrucksreferenz
- Verwenden von WASM-Transformationen in Datenflussdiagrammen