Forstå behandling af hændelse
Azure Stream Analytics er en tjeneste til kompleks hændelsesbehandling og analyse af streamingdata. Stream Analytics bruges til at:
- Indfødning af data fra et input, f.eks. en Azure-hændelseshub, Azure IoT Hub eller Azure Storage-blobobjektbeholder.
- Behandl dataene ved hjælp af en forespørgsel for at vælge, projektere og aggregere dataværdier.
- Skriv resultaterne til et output, såsom Azure Data Lake Storage Gen2, Azure SQL Database, Azure Cosmos DB, Azure Functions, Azure Event Hubs, Microsoft Power BI eller andre.
Når en Stream Analytics-forespørgsel er startet, køres den permanent, og nye data behandles, efterhånden som de modtages i inputtet, og der gemmes resultater i outputtet.
Stream Analytics garanterer præcis én gang hændelsesbehandling og mindst én gang levering af hændelser, så hændelser aldrig går tabt. Den har indbyggede genoprettelsesfunktioner, hvis leveringen af en hændelse mislykkes. Stream Analytics leverer også indbygget kontrol for at bevare jobbets tilstand og giver gentagne resultater. Da Azure Stream Analytics er en PaaS-løsning (platform-as-a-service), er den fuldt administreret og yderst pålidelig. Dens indbyggede integration med forskellige kilder og destinationer og giver en fleksibel programmeringsmodel. Stream Analytics-programmet muliggør beregning i hukommelsen, så det giver høj ydeevne.
Azure Stream Analytics-job og -klynger
Den nemmeste måde at bruge Azure Stream Analytics på er at oprette et Stream Analytics-job i et Azure-abonnement, konfigurere dets input(er) og output og definere den forespørgsel, som jobbet skal bruge til at behandle dataene. Forespørgslen udtrykkes ved hjælp af SQL-syntaksen (structured query language) og kan inkorporere statiske referencedata fra flere datakilder for at levere opslagsværdier, der kan kombineres med de streamingdata, der er hentet fra et input.
Hvis dine stream process-krav er komplekse eller ressourcekrævende, kan du oprette en Stream Analysis-klynge, som bruger den samme underliggende processormotor som et Stream Analytics-job, men i en dedikeret lejer (så din behandling ikke påvirkes af andre kunder) og med konfigurerbar skalerbarhed, der gør det muligt at definere den rette balance mellem gennemstrømning og omkostninger til dit specifikke scenarie.
Inputs
Azure Stream Analytics kan hente data fra følgende typer input:
- Azure Event Hubs
- Azure IoT Hub
- Azure Blob Storage
- Azure Data Lake Storage Gen2
- Apache Kafka
Input bruges generelt til at referere til en kilde til streamingdata, som behandles, når der tilføjes nye hændelsesposter. Derudover kan du definere referenceinput , der bruges til at indlæse statiske data for at supplere realtids-eventstream-data. Du kan f.eks. indtage en strøm af vejrobservationsdata i realtid, der indeholder et entydigt id for hver vejrstation, og forøge disse data med et statisk referenceinput, der matcher vejrstations-id'et med et mere meningsfuldt navn.
Udgange
Output er destinationer, som resultaterne af streambehandling sendes til. Azure Stream Analytics understøtter et bredt udvalg af output-sinks, som kan bruges til at:
- Bevare resultater til yderligere analyse; for eksempel ved at skrive til Azure Data Lake Storage Gen2, Azure SQL Database eller Azure Cosmos DB.
- Analysere log- og telemetridata i stor skala; for eksempel ved at sende resultater til Azure Data Explorer.
- Vis en realtids-visualisering af datastrømmen; for eksempel ved at tilføje data til et datasæt i Microsoft Power BI.
- Generere filtrerede eller opsummerede hændelser til nedstrøms behandling; for eksempel ved at skrive resultater til Azure Event Hubs.
Forespørgsler
Streambehandlingslogikken er indkapslet i en forespørgsel. Forespørgsler defineres ved hjælp af SQL-sætninger, der VÆLGER datafelter fra et eller flere input, filtrerer eller aggregerer dataene og skriver resultaterne til et output. Følgende forespørgsel filtrerer f.eks. hændelserne fra inputtet for vejrhændelser , så de kun indeholder data fra hændelser med en temperaturværdi , der er mindre end 0, og skriver resultaterne til outputtet cold-temps :
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Et felt med navnet EventProcessedUtcTime oprettes automatisk for at definere det tidspunkt, hvor hændelsen behandles af din Azure Stream Analytics-forespørgsel. Du kan bruge dette felt til at bestemme tidsstemplet for hændelsen, eller du kan eksplicit angive et andet DateTime-felt ved hjælp af TIMESTAMP BY-delsætningen, som vist i dette eksempel. Afhængigt af det input, som streamingdataene læses fra, kan et eller flere potentielle tidsstempelfelter oprettes automatisk. Når du f.eks. bruger et Event Hubs-input , genereres der et felt med navnet EventQueuedUtcTime for at registrere det tidspunkt, hvor hændelsen blev modtaget i hændelseshubkøen.
Det felt, der bruges som tidsstempel, er vigtigt, når data aggregeres over tidsmæssige vinduer, hvilket beskrives derefter.
No-code editor
Hvis du foretrækker at bygge dit streambehandlingsjob uden at skrive SQL, inkluderer Azure Stream Analytics en editor uden kode. Du kan få adgang til den via Azure Stream Analytics-portalen eller Azure Event Hubs-portalen. No-code-editoren giver et træk-og-slip lærred, hvor du forbinder inputkilder, tilføjer transformationer (inklusive vinduesopdeling og aggregationer) og konfigurerer output—uden at skrive kode.
Du kan bruge no-code-editoren til hurtigt at prototype og derefter eventuelt se eller tilpasse den genererede SQL-forespørgsel til mere avancerede scenarier.