Förstå händelsebearbetning
Azure Stream Analytics är en tjänst för komplex händelsebearbetning och analys av strömmande data. Stream Analytics används för att:
- Ta emot data från en ingång, till exempel en Azure-händelsehubb, Azure IoT Hub eller Azure Storage blob-containrar.
- Bearbeta data med hjälp av en fråga för att välja, projicera och aggregera datavärden.
- Skriv resultatet till utdata, till exempel Azure Data Lake Storage Gen2, Azure SQL Database, Azure Cosmos DB, Azure Functions, Azure Event Hubs, Microsoft Power BI eller andra.
När en Stream Analytics-fråga har startats körs den ständigt och bearbetar nya data när de tas emot i indata och lagrar resultat i utdata.
Stream Analytics garanterar händelsebearbetning exakt en gång och att händelser levereras minst en gång, så att de aldrig går förlorade. Bearbetning exakt en gång garanteras med valda utdata. Mer information finns i Garantier för händelseleverans. Stream Analytics har inbyggda återställningsfunktioner om leveransen av en händelse misslyckas. Dessutom tillhandahåller Stream Analytics inbyggda kontrollpunkter som behåller jobbets tillstånd och ger upprepningsbara resultat. Eftersom Azure Stream Analytics är en PaaS-lösning (plattform som en tjänst) hanteras den fullständigt. Den inbyggda integreringen med olika källor och mål ger en flexibel programmeringsmodell. Stream Analytics-motorn möjliggör minnesintern beräkning, så den ger höga prestanda.
Azure Stream Analytics-jobb och -kluster
Det enklaste sättet att använda Azure Stream Analytics är att skapa ett Stream Analytics-jobb i en Azure-prenumeration, konfigurera indata och utdata och definiera frågan som jobbet använder för att bearbeta data. Frågan uttrycks med sql-syntax (structured query language) och kan innehålla statiska referensdata från flera datakällor för att tillhandahålla uppslagsvärden som kan kombineras med strömmande data som matas in från indata.
Om dina dataströmprocesskrav är komplexa eller resursintensiva kan du skapa ett Stream Analytics kluster som använder samma underliggande bearbetningsmotor som ett Stream Analytics-jobb, men i en distribution för en enskild klient (så att bearbetningen inte påverkas av andra kunder) och med konfigurerbar skalbarhet som gör att du kan definiera rätt balans mellan dataflöde och kostnad för ditt specifika scenario. Mer information finns i Översikt över Azure Stream Analytics-kluster.
Ingångar
Azure Stream Analytics kan mata in data från följande typer av indata:
- Azure Event Hubs
- Azure IoT Hub
- Azure Blob Storage-lagringstjänst
- Azure Data Lake Storage Gen2
- Apache Kafka
Indata används vanligtvis för att referera till en källa för strömmande data, som bearbetas när nya händelseposter läggs till. Dessutom kan du definiera referensindata som används för att mata in statiska data för att utöka händelseströmsdata i realtid. Du kan till exempel mata in en ström av väderobservationsdata i realtid som innehåller ett unikt ID för varje väderstation och utöka dessa data med en statisk referensinmatning som matchar väderstations-ID:t till ett mer meningsfullt namn.
Utdata
Utdata är mål som resultatet av dataströmbearbetningen skickas till. Azure Stream Analytics stöder en mängd olika utdatamottagare, som kan användas för att:
- Spara resultat för ytterligare analys; till exempel genom att skriva till Azure Data Lake Storage Gen2, Azure SQL Database eller Azure Cosmos DB.
- Analysera logg- och telemetridata i stor skala. till exempel genom att skicka resultat till Azure Data Explorer.
- Visa en realtidsvisualisering av dataströmmen. till exempel genom att lägga till data till en datauppsättning i Microsoft Power BI.
- Generera filtrerade eller sammanfattade händelser för nedströmsbearbetning. till exempel genom att skriva resultat till Azure Event Hubs.
Frågor
Dataströmbearbetningslogik kapslas in i en fråga. Frågor definieras med SQL-uttryck som VÄLJER datafält FRÅN en eller flera indata, filtrerar eller aggregerar data och skriver resultatet TILL ett utdata. Följande fråga filtrerar till exempel händelserna från väderhändelser för att endast inkludera data från händelser med ett temperaturvärde under 0, och skriver resultatet till kalla-temperaturer-utdata.
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Ett fält med namnet EventProcessedUtcTime skapas automatiskt för att definiera den tid då händelsen bearbetas av din Azure Stream Analytics-fråga. Som standard använder Stream Analytics den tid då händelsen kommer till indata som tidsstämpel, eller så kan du uttryckligen ange ett annat DateTime-fält med hjälp av TIMESTAMP BY-satsen, som du ser i det här exemplet. Beroende på de indata som strömmande data läses från kan ett eller flera potentiella tidsstämpelfält skapas automatiskt. När du till exempel använder en Event Hubs-indata genereras ett fält med namnet EventEnqueuedUtcTime för att registrera den tid då händelsen togs emot i händelsehubben.
Det fält som används som tidsstämpel är viktigt när du aggregerar data över temporala fönster, vilket diskuteras härnäst.
Redigeringsprogram utan kod
Om du föredrar att skapa dataströmbearbetningsjobbet utan att skriva SQL innehåller Azure Stream Analytics en redigeringsprogram utan kod. Du kan komma åt den från Azure Stream Analytics-portalen (förhandsversion) eller Azure Event Hubs portalen. Den kodfria redigeraren tillhandahåller en dra-och-släpp-arbetsyta där du ansluter indatakällor, lägger till transformeringar (inklusive tidsfönsteraggregeringar som fasta, hoppande och sessionsfönster) och konfigurerar utdata, utan att skriva någon kod. Mer information finns i No-code stream processing in Azure Stream Analytics.