Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En dataflödesgraf är en konfigurerbar pipeline som bearbetar data när den rör sig genom Azure IoT Operations. Ett standarddataflöde följer en fast anriknings-, filter- och kartsekvens, men en dataflödesgraf låter dig komponera transformationer i valfri ordning, förgrena dig i parallella vägar och aggregera data över tidsfönster.
DataflowGraph Kubernetes-egenresurserna definierar en dataflödesgraf. I resursen kopplar du samman källor, transformatorer och destinationer för att bygga bearbetningspipelines som passar din situation.
Viktigt!
Dataflödesdiagram stöder för närvarande endast MQTT-, Kafka- och OpenTelemetry-slutpunkter. Andra slutpunktstyper som Data Lake, Microsoft Fabric OneLake, Azure Data Explorer och Local Storage stöds inte.
Dataflöden jämfört med dataflödesdiagram
Azure IoT Operations tillhandahåller två sätt att bearbeta data i en pipeline:
| Förmåga | Dataflöden | Dataflödesdiagram |
|---|---|---|
| Rörledningsform | Åtgärdat: berika, filtrera, mappa | Flexibel: valfri ordning, förgrening, sammanslagning |
| Transformtyper | Kartlägga, filtrera, berika | Karta, filtrera, förgrena, sammanfoga, fönster, gas, berika |
| Tidsbaserad aggregering | Ej tillgänglig | Fönstertransformeringar med rullande fönster |
| Villkorsstyrd routning | Ej tillgänglig | Förgrena och sammanfoga transformer |
| Stöd för slutpunkt | Alla slutpunktstyper | Endast MQTT, Kafka och OpenTelemetry |
För nya projekt som använder slutpunktstyper som stöds rekommenderar vi dataflödesdiagram. Dataflöden stöds fortfarande fullt ut för alla scenarier och de stöder alla typer av slutpunkter.
Tillgängliga transformationer
Varje transformering är ett fördefinierat bearbetningssteg som du konfigurerar med regler och sammanlänkar med andra transformeringar i en DataflowGraph-resurs.
| Omvandla | Artifact | Beskrivning |
|---|---|---|
| Karta | azureiotoperations/graph-dataflow-map:1.0.0 |
Byt namn på, omstrukturera, beräkna och kopiera fält. |
| Filter | azureiotoperations/graph-dataflow-filter:1.0.0 |
Ta bort meddelanden som matchar ett villkor. |
| Filial | azureiotoperations/graph-dataflow-branch:1.0.0 |
Dirigera varje meddelande till en true eller false sökväg baserat på ett villkor. |
| Concatenate | azureiotoperations/graph-dataflow-concatenate:1.0.0 |
Sammanfoga två eller flera sökvägar tillbaka till en enda sökväg. |
| Fönster | azureiotoperations/graph-dataflow-window:1.0.0 |
Samla in meddelanden över ett tidsintervall och aggregera sedan. |
| Throttle | azureiotoperations/graph-dataflow-throttle:1.0.0 |
Begränsa meddelandefrekvensen per MQTT-ämnesmönster. |
Alla transformeringar delar ett uttrycksspråk för operatorer, funktioner och fältreferenser. Du kan också utöka meddelanden med externa data från ett tillståndslager i mappnings-, filter- och grentransformeringar.
Tip
Uttryck använder positionsvariabler, så $1 är den första indatan, $2 är den andra, och så vidare.
Expressions-referensen listar inbyggda funktioner som cToF och täcker varje operator, funktion och metadatafält som är tillgängligt för transformer.
Hur transformer sätts ihop i en dataflödesgraf
Transformeringar ansluter i följd i en DataflowGraph resurs: Källa > Transformering A > Transformering B > ... > Mål.
Branchomvandlingar delar upp flödet i parallella vägar, och sammankopplar omvandlingar som förenar dem igen.
Du kan länka valfritt antal transformeringar i valfri ordning. En pipeline med en enda karttransformering är lika giltig som en som filtrerar, grenar, mappar varje sökväg på olika sätt, sammanfogar och sedan aggregerar över ett tidsfönster.
Hur konfigurationen av dataflödesgrafer fungerar
Varje transform i en dataflödesgraf refererar till en förbyggd artefakt hämtad från ett containerregister. Du konfigurerar transformering genom att skicka regler som JSON via configuration avsnittet i grafresursen.
När du distribuerar Azure IoT Operations skapar den automatiskt en standardregister-endpoint som default pekar på mcr.microsoft.com. De inbyggda transformeringarna använder den här slutpunkten för att hämta artefakter från Microsoft Container Registry. Du behöver ingen extra önskelistauppsättning.
En dataflödesgrafresurs definierar tre typer av element—en källa, en eller flera transformer (var och en med nodeType: Graph), och en destination – och en mängd nodeConnections av dessa beskriver hur data flödar mellan dem. Varje transform configuration passerar sina regler som en JSON-sträng under nyckeln rules .
För ett komplett, körbart exempel som läser temperaturdata, konverterar Celsius till Fahrenheit med en karttransform och publicerar resultatet – i Operations-upplevelsen, Azure CLI, Bicep och Kubernetes – se Skapa en dataflödesgraf. I de instruktioner som följer fokuserar exemplen på själva transformeringsreglerna.
Konfigurera scheman på nodanslutningar
Dataflödesgrafer hanterar scheman annorlunda än dataflöden. I stället för att ange schemat för källan eller omvandlingen konfigurerar du scheman på nodanslutningarna mellan noder i diagrammet. Gren- och filtertransformer kan valfritt validera kördata mot scheman kopplade till nodanslutningar.
Varje post i matrisen nodeConnections kan inkludera en schema på sidan from av en anslutning. Detta schema beskriver det förväntade formatet för datan som flödar mellan dessa två noder:
nodeConnections: [
{
from: {
name: 'source'
schema: {
schemaRef: 'aio-sr://my-namespace/sensor-data:1'
serializationFormat: 'Json'
}
}
to: {
name: 'transform'
}
}
]
Värdet schemaRef använder formatet aio-sr://<namespace>/<name>:<version> och pekar på ett schema som lagras i schemaregistret. Eftersom dataflödesgrafer endast stöder MQTT-, Kafka- och OpenTelemetri-endpoints, är Jsondet stödda serialiseringsformatet .
Följande tabell sammanfattar hur schemakonfiguration skiljer sig mellan dataflöden och dataflödesgrafer:
| Aspect | Dataflöden | Dataflödesdiagram |
|---|---|---|
| Schemalokalisering | Vid källa (sourceSettings.schemaRef) och omvandling (builtInTransformationSettings.schemaRef) |
Vid nodanslutningar (nodeConnections[].from.schema) |
| Målformat som stöds | JSON, Parquet, Delta | JSON |
| Körningsverifiering | Stöds inte för källscheman | Valfritt på nodanslutningar genom gren- och filtertransformer |
Note
För dataflödesgrafer är JSON för närvarande det enda stödda destinationsformatet, trots formaten som listas i REST API:s referensdokumentation.
För definitioner av meddelandescheman, format och hur man laddar upp scheman, se Förstå meddelandescheman.
Inbyggda transformeringar jämfört med WASM-transformeringar
Dataflödesdiagram stöder två typer av transformeringar:
- Inbyggda transformeringar är fördefinierade av Microsoft (mappa, filtrera, förgrena, sammanfoga, fönster, begränsa). Du konfigurerar dem med regler. Ingen kodning krävs.
- WASM-transformeringar är anpassade WebAssembly-moduler som utvecklare skapar och distribuerar. Använd dem när du behöver logik som de inbyggda transformerna inte täcker.
Båda typerna av transformer körs i samma DataflowGraph resurs, och du kan blanda dem i en enda pipeline. Information om hur du skapar och distribuerar anpassade transformeringar finns i Använda WASM-transformeringar i dataflödesdiagram.
Felhantering i dataflödesgrafer
När en transform stöter på ett fel under bearbetningen av ett meddelande (till exempel ett saknat fält eller ett ogiltigt uttryck), släpper transformen meddelandet och loggar ett fel. Pipelinjen fortsätter att bearbeta efterföljande meddelanden.
Vanliga orsaker till bearbetningsfel:
- Ett fält som refereras
inputstill i en regel finns inte i meddelandet. - Ett filter- eller grenuttryck returnerar ett icke-booleskt värde.
- Ett uttryck refererar till en inkompatibel datatyp (till exempel ett JSON-objekt i aritmetik).
- Det är omöjligt att komma åt ett tillståndslager som används för berikning.
Om du vill övervaka bearbetningsfel kontrollerar du poddloggarna för dataflödesdiagrammet eller använder måttslutpunkterna. Mer information finns i Konfigurera observerbarhet och övervakning.
Skalningsbegränsning för tillståndskänsliga grafer
Viktigt!
Fönster- och gasreglage transformerar är statele. Varje instans behåller sitt eget tillstånd och instanserna delar inte det tillståndet med varandra. När antalet dataflödesprofiler är fler än ett distribuerar delade prenumerationer meddelanden mellan instanserna, så varje instans ser endast en delmängd av meddelandena. En fönstertransform beräknar sedan aggregationer som medelvärden, summor och räkningar över en partiell dataset, och en throttle-transform upprätthåller den konfigurerade hastighetsgränsen oberoende i varje instans istället för över hela pipelinen.
Sätt antalet data flow-profiler till 1 för alla dataflödesgrafer som använder en fönster- eller throttle-transform. Tillståndslösa dataflödesgrafer som endast använder mapp-, filter-, gren- och koncatenationstransformer kan säkert använda högre instansantal för att öka genomströmningen.
Prestandavägledning för dataflödesgrafer
Varje transformering i pipelinen lägger till bearbetningskostnader. Tänk på följande riktlinjer:
- Föredrar färre transformeringar med fler regler. Om du har många transformeringsregler som fungerar på samma struktur placerar du dem i en enda karttransformering i stället för att skapa separata transformeringar för varje regel.
- Använd flera transformeringar när logiken är distinkt. Separata transformeringar är meningsfulla när olika bearbetningssteg skiljer sig i grunden (filtrering jämfört med mappning jämfört med aggregering).
- Håll ihop relaterade regler. En enda karttransformering kan hantera fältbyte, omstrukturering, beräknade fält och metadatatransformeringar samtidigt.