Förstå händelsebearbetning

Slutförd

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:

  • Mata in data från en indata, till exempel en Azure-händelsehubb, Azure IoT Hub eller Azure Storage-blobcontainer.
  • 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 Gen 2, Azure SQL Database, Azure Synapse Analytics, Azure Functions, Azure Event Hub, Microsoft Power BI eller andra.

Diagram som visar ett Stream Analytics-jobb med indata, en fråga och utdata

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 leverans av händelser minst en gång så att inga händelser går förlorade. Det finns inbyggda återställningsfunktioner om det inte går att leverera en händelse. Dessutom ger Stream Analytics inbyggda kontrollpunkter för att upprätthålla jobbets tillstånd och ger upprepningsbara resultat. Eftersom Azure Stream Analytics är en PaaS-lösning (plattform som en tjänst) är den fullständigt hanterad och mycket tillförlitlig. Den inbyggda integreringen med olika källor och mål ger en flexibel programmerbarhetsmodell. 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 den fråga som jobbet ska använda 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 Analysis-kluster som använder samma underliggande bearbetningsmotor som ett Stream Analytics-jobb, men i en dedikerad klientorganisation (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.

Indata

Azure Stream Analytics kan mata in data från följande typer av indata:

  • Azure Event Hubs
  • Azure IoT Hub
  • Azure Blob Storage
  • Azure Data Lake Storage Gen2

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ömdata 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 statiska referensindata 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 utdata, som kan användas för att:

  • Spara resultatet av dataströmbearbetningen för ytterligare analys. till exempel genom att läsa in dem i en datasjö eller ett informationslager.
  • 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 resultatet av dataströmbearbetning till en händelsehubb.

Frågor

Dataströmbearbetningslogik kapslas in i en fråga. Frågor definieras med HJÄLP av SQL-instruktioner 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ändelsernas indata så att endast data från händelser med ett temperaturvärde under 0 inkluderas och resultatet skrivs till kall temps-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 när händelsen bearbetas av Azure Stream Analytics-frågan. Du kan använda det här fältet för att fastställa tidsstämpeln för händelsen, 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å vilka indata som strömmande data läss 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 EventQueuedUtcTime för att registrera tidpunkten då händelsen togs emot i händelsehubbens kö.

Det fält som används som tidsstämpel är viktigt när du aggregerar data över temporala fönster, vilket beskrivs härnäst.