Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een dataflowgrafiek is een configureerbare pijplijn die data verwerkt terwijl deze door Azure IoT-bewerkingen gaat. Een standaard datastroom volgt een vaste verrijking, filter en map-sequentie, maar een datastroomgrafiek laat je transformaties in willekeurige volgorde samenstellen, parallelle paden vertakken en data aggregeren over tijdsvensters.
De DataflowGraph aangepaste Kubernetes-resource definieert een datastroomgrafiek. Binnen de bron verbind je bronnen, transformaties en bestemmingen om verwerkingspijplijnen te bouwen die aansluiten bij jouw situatie.
Belangrijk
Gegevensstroomgrafieken ondersteunen momenteel alleen MQTT-, Kafka- en OpenTelemetry-eindpunten. Andere eindpunttypen, zoals Data Lake, Microsoft Fabric OneLake, Azure Data Explorer en Lokale opslag, worden niet ondersteund.
Gegevensstromen versus gegevensstroomgrafieken
Azure IoT-bewerkingen biedt twee manieren om gegevens in een pijplijn te verwerken:
| Vermogen | Gegevensstromen | Gegevensstroomgrafieken |
|---|---|---|
| Pijplijnvorm | Opgelost: verrijken, filteren, kaart | Flexibel: elke volgorde, vertakking, samenvoeging |
| Transformatietypen | Kaart, filter, verrijken | Kaarten, filteren, vertakken, aankoppelen, venster, gashendel geven, verrijken |
| Aggregatie op basis van tijd | Niet beschikbaar | Venstertransformaties met vallende vensters |
| Voorwaardelijke routering | Niet beschikbaar | Transformaties vertakken en samenvoegen |
| Eindpuntondersteuning | Alle eindpunttypen | Alleen MQTT-, Kafka- en OpenTelemetry |
Voor nieuwe projecten die gebruikmaken van ondersteunde eindpunttypen raden we gegevensstroomgrafieken aan. Gegevensstromen blijven volledig ondersteund voor alle scenario's en ondersteunen het volledige scala aan eindpunttypen.
Beschikbare transformaties
Elke transformatie is een vooraf gebouwde verwerkingsstap die je configureert met regels en een keten met andere transformaties binnen een DataflowGraph resource.
| Transformeren | Artifact | Description |
|---|---|---|
| Kaart | azureiotoperations/graph-dataflow-map:1.0.0 |
Hernoem, herstructureer, bereken en kopieer velden. |
| Filter | azureiotoperations/graph-dataflow-filter:1.0.0 |
Berichten verwijderen die overeenkomen met een voorwaarde. |
| Filiaal | azureiotoperations/graph-dataflow-branch:1.0.0 |
Routeer elk bericht naar een true of false pad op basis van een voorwaarde. |
| Concatenate | azureiotoperations/graph-dataflow-concatenate:1.0.0 |
Voeg twee of meer paden weer samen in één pad. |
| Venster | azureiotoperations/graph-dataflow-window:1.0.0 |
Verzamel berichten gedurende een tijdsinterval en aggregeren. |
| Throttle | azureiotoperations/graph-dataflow-throttle:1.0.0 |
Beperk de berichtsnelheid per MQTT-themapatroon. |
Alle transformaties delen een expressietaal voor operators, functies en veldverwijzingen. U kunt berichten ook verrijken met externe gegevens uit een statusarchief in kaart-, filter- en vertakkingstransformaties.
Tip
Expressies gebruiken positionele variabelen, dus $1 is de eerste invoer, $2 is de tweede, enzovoort. De Expressions-referentie vermeldt ingebouwde functies zoals cToF en behandelt elke operator, functie en metadataveld dat beschikbaar is voor transformaties.
Hoe transformaties samengesteld worden in een datastroomgrafiek
Transformaties verbinden in volgorde binnen een DataflowGraph resource: Bron > Transformatie A > Transformatie B > ... > Bestemming.
Vertakkings-transformaties splitsen de stroom in parallelle paden, en verbindings-transformaties voegen ze weer samen.
U kunt elk willekeurig aantal transformaties in elke volgorde koppelen. Een pijplijn met één enkele mapping is net zo geldig als een pijplijn die filtert, vertakt, elk pad anders toewijst, samenvoegt en vervolgens aggregeert in een tijdvenster.
Hoe de configuratie van datastroomgrafieken werkt
Elke transformatie in een dataflowgrafiek verwijst naar een vooraf gebouwd artefact dat uit een containerregister is gehaald. U configureert de transformatie door regels door te geven als JSON via de configuration sectie van de grafiekresource.
Wanneer je Azure IoT-bewerkingen uitrolt, maakt het automatisch een standaard register-endpoint aan dat default wijst naar mcr.microsoft.com. De ingebouwde transformaties gebruiken dit eindpunt om artefacten op te halen uit Microsoft Container Registry. Je hebt geen extra registerinstallatie nodig.
Een datastroomgrafiekresource definieert drie soorten elementen—een bron, één of meer transformaties (elk met nodeType: Graph), en een bestemming—en een set die nodeConnections beschrijft hoe data tussen deze elementen stroomt. Elke transformatie configuration geeft zijn regels door als een JSON-string onder de rules sleutel.
Voor een volledig, uitvoerbaar voorbeeld dat temperatuurgegevens leest, Celsius omzet naar Fahrenheit met een maptransformatie en het resultaat publiceert—in de Operations-ervaring, Azure CLI, Bicep en Kubernetes—zie Create a data flow graph. In de artikelen die volgen, richten voorbeelden zich op de transformatieregels zelf.
Configureer schema's op knooppuntverbindingen
Dataflowgrafieken behandelen schema's anders dan datastromen. In plaats van het schema in te stellen op de bron of transformatie, configureert u schema's op de knooppuntverbindingen tussen knooppunten in de grafiek. Branch- en filtertransformaties kunnen optioneel runtime-data valideren tegen schema's die aan knooppuntverbindingen zijn gekoppeld.
Elke invoer in de nodeConnections array kan een schema aan de from zijkant van een verbinding bevatten. Dit schema beschrijft het verwachte formaat van de data die tussen die twee knooppunten stroomt:
nodeConnections: [
{
from: {
name: 'source'
schema: {
schemaRef: 'aio-sr://my-namespace/sensor-data:1'
serializationFormat: 'Json'
}
}
to: {
name: 'transform'
}
}
]
De schemaRef waarde gebruikt het formaat aio-sr://<namespace>/<name>:<version> en wijst naar een schema dat is opgeslagen in het schemaregister. Omdat datastroomgrafieken alleen MQTT-, Kafka- en OpenTelemetrie-eindpunten ondersteunen, is Jsonhet ondersteunde serialisatieformaat .
De volgende tabel vat samen hoe schemaconfiguratie verschilt tussen datastromen en datastroomgrafieken:
| Aspect | Gegevensstromen | Gegevensstroomgrafieken |
|---|---|---|
| Schemalocatie | Bij bron (sourceSettings.schemaRef) en transformatie (builtInTransformationSettings.schemaRef) |
Op knooppuntverbindingen (nodeConnections[].from.schema) |
| Ondersteunde doelindelingen | JSON, Parquet, Delta | JSON |
| Runtimevalidatie | Niet ondersteund voor bronschema's | Optioneel op knooppuntverbindingen via branch- en filtertransformaties |
Note
Voor datastroomgrafieken is JSON momenteel het enige ondersteunde bestemmingsformaat, ondanks de formaten die in de REST API-referentiedocumentatie worden vermeld.
Voor definities van berichtschema's, formaten en hoe je schema's uploadt, zie Understand message schemas.
Ingebouwde transformaties versus WASM-transformaties
Gegevensstroomgrafieken ondersteunen twee soorten transformaties:
- Ingebouwde transformaties worden vooraf gebouwd door Microsoft (map, filter, branch, concatenate, window, throttle). U configureert ze met regels. Er is geen codering vereist.
- WASM-transformaties zijn aangepaste WebAssembly-modules die ontwikkelaars bouwen en implementeren. Gebruik deze wanneer u logica nodig hebt die niet door de ingebouwde transformaties wordt behandeld.
Beide soorten transformaties draaien binnen dezelfde DataflowGraph bron, en je kunt ze in één enkele pijplijn mengen. Zie WASM-transformaties gebruiken in gegevensstroomgrafieken voor meer informatie over het bouwen en implementeren van aangepaste transformaties.
Foutafhandeling in datastroomgrafieken
Wanneer een transformatie een fout tegenkomt tijdens het verwerken van een bericht (bijvoorbeeld een ontbrekend veld of een ongeldige expressie), laat de transformatie het bericht vallen en registreert een foutmelding. De pijplijn blijft de volgende berichten verwerken.
Veelvoorkomende oorzaken van verwerkingsfouten:
- Een veld waarnaar in een regel
inputswordt verwezen, bestaat niet in het bericht. - Een filter- of vertakkingsexpressie retourneert een niet-Booleaanse waarde.
- Een expressie verwijst naar een incompatibel datatype (bijvoorbeeld een JSON-object in de rekenkunde).
- Een staatsarchief dat wordt gebruikt voor verrijking is onbereikbaar.
Als u wilt controleren op verwerkingsfouten, controleert u de podlogboeken voor de gegevensstroomgrafiek of gebruikt u de eindpunten voor metrische gegevens. Zie Waarneembaarheid en bewaking configureren voor meer informatie.
Schaalbaarheidsbeperking voor statusbehoudende grafen
Belangrijk
Raam- en gashendeltransformaties zijn stateful. Elke instantie behoudt zijn eigen staat en instanties delen die toestand niet met elkaar. Wanneer het aantal instanties in het dataflowprofiel groter is dan één, verdelen gedeelde abonnementen berichten over instanties , zodat elke instantie slechts een deelverzameling van de berichten ziet. Een windowtransform berekent vervolgens aggregaties zoals gemiddelden, sommen en tellingen over een gedeeltelijke dataset, en een throttle-transformatie handhaaft de geconfigureerde snelheidslimiet onafhankelijk in elke instantie in plaats van over de hele pijplijn.
Stel het aantal instanties van het dataflowprofiel in op 1 voor elke datastroomgrafiek die een window- of throttle-transformatie gebruikt. Stateless dataflow-grafieken die alleen map-, filter-, branch- en concatenate-transformaties gebruiken, kunnen veilig hogere instance-tellingen gebruiken om de doorvoersnelheid te verhogen.
Prestatierichtlijnen voor datastroomgrafieken
Elke transformatie in de pijplijn voegt verwerkingsoverhead toe. Houd rekening met deze richtlijnen:
- Geef de voorkeur aan minder transformaties met meer regels. Als u veel transformatieregels hebt die op dezelfde structuur werken, voegt u deze samen in één verzameltransformatie in plaats van afzonderlijke transformaties te maken voor elke regel.
- Gebruik meerdere transformaties wanneer de logica uniek is. Afzonderlijke transformaties zijn logisch wanneer verschillende verwerkingsstappen fundamenteel verschillen (filteren versus transformatie versus aggregatie).
- Houd gerelateerde regels bij elkaar. Eén transformatie kan veld hernoeming, herstructurering, berekende velden en metagegevenstransformaties in één keer verwerken.
Verwante onderwerpen
- Gegevensstromen versus gegevensstroomgrafieken
- Een gegevensstroomgrafiek maken
- Gegevens transformeren met kaart
- Gegevens filteren en routeren
- Gegevens in de loop van de tijd aggregeren
- Verrijken met externe gegevens
- Throttlegegevens
- Berichten routeren naar verschillende onderwerpen
- Expressiesoverzicht
- WASM-transformaties gebruiken in gegevensstroomgrafieken