Gebeurtenisverwerking begrijpen

Voltooid

Azure Stream Analytics is een service voor het verwerken van complexe gebeurtenissen en het analyseren van streaminggegevens. Stream Analytics wordt gebruikt voor het volgende:

  • Gegevens opnemen uit een invoer, zoals een Azure Event Hub, Azure IoT Hub of Azure Storage-blobcontainer.
  • Verwerk de gegevens met behulp van een query om gegevenswaarden te selecteren, te projecteren en samen te voegen.
  • Schrijf de resultaten naar een uitvoer, zoals Azure Data Lake Gen 2, Azure SQL Database, Azure Synapse Analytics, Azure Functions, Azure Event Hub, Microsoft Power BI of andere.

Diagram met een Stream Analytics-taak met invoer, een query en uitvoer

Zodra de query is gestart, wordt een Stream Analytics-query continu uitgevoerd, waarbij nieuwe gegevens worden verwerkt wanneer deze in de invoer binnenkomen en de resultaten in de uitvoer worden opgeslagen.

Stream Analytics garandeert Exactly-once-gebeurtenissenverwerking en At-least-once-levering van gebeurtenissen, zodat gebeurtenissen nooit verloren gaan. Het bevat ingebouwde herstelfuncties in geval de levering van een gebeurtenis mislukt. Stream Analytics biedt ook de ingebouwde mogelijkheid voor het gebruik van controlepunten om de status van uw taak bij te houden, en levert herhaalbare resultaten. Omdat Azure Stream Analytics een PaaS-oplossing (Platform-as-a-Service) is, is het volledig beheerd en zeer betrouwbaar. De ingebouwde integratie met verschillende bronnen en bestemmingen en biedt een flexibel programmeerbaarheidsmodel. De Stream Analytics-engine maakt berekeningen in het geheugen mogelijk, zodat deze hoge prestaties biedt.

Azure Stream Analytics-taken en -clusters

De eenvoudigste manier om Azure Stream Analytics te gebruiken, is door een Stream Analytics-taak te maken in een Azure-abonnement, de invoer(s) en uitvoer(s) ervan te configureren en de query te definiëren die de taak gebruikt om de gegevens te verwerken. De query wordt uitgedrukt met sql-syntaxis (Structured Query Language) en kan statische referentiegegevens uit meerdere gegevensbronnen bevatten om opzoekwaarden op te geven die kunnen worden gecombineerd met de streaminggegevens die worden opgenomen vanuit een invoer.

Als uw streamprocesvereisten complex of resource-intensief zijn, kunt u een Stream Analysis-cluster maken dat gebruikmaakt van dezelfde onderliggende verwerkingsengine als een Stream Analytics-taak, maar in een toegewezen tenant (zodat uw verwerking niet wordt beïnvloed door andere klanten) en met configureerbare schaalbaarheid waarmee u de juiste balans tussen doorvoer en kosten voor uw specifieke scenario kunt definiëren.

Invoerwaarden

Azure Stream Analytics kan gegevens opnemen uit de volgende soorten invoer:

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

Invoer wordt over het algemeen gebruikt om te verwijzen naar een bron van streaminggegevens, die worden verwerkt wanneer nieuwe gebeurtenisrecords worden toegevoegd. Daarnaast kunt u referentie-invoer definiëren die wordt gebruikt om statische gegevens op te nemen om de realtime gebeurtenisstroomgegevens te verbeteren. U kunt bijvoorbeeld een stroom realtime weerobservatiegegevens opnemen met een unieke id voor elk weerstation en die gegevens uitbreiden met een statische verwijzingsinvoer die overeenkomt met de id van het weerstation met een zinvollere naam.

Uitvoerwaarden

Uitvoer is een bestemming waarnaar de resultaten van de stroomverwerking worden verzonden. Azure Stream Analytics ondersteunt een breed scala aan uitvoer, die kan worden gebruikt voor het volgende:

  • De resultaten van de stroomverwerking behouden voor verdere analyse; bijvoorbeeld door ze in een data lake of datawarehouse te laden.
  • Een realtime visualisatie van de gegevensstroom weergeven; bijvoorbeeld door gegevens toe te voegen aan een gegevensset in Microsoft Power BI.
  • Gefilterde of samengevatte gebeurtenissen genereren voor downstreamverwerking; bijvoorbeeld door de resultaten van de stroomverwerking naar een Event Hub te schrijven.

Query's

De stroomverwerkingslogica is ingekapseld in een query. Query's worden gedefinieerd met behulp van SQL-instructies die gegevensvelden SELECTEREN UIT een of meer invoergegevens, de gegevens filteren of aggregeren en de resultaten in een uitvoer schrijven. De volgende query filtert bijvoorbeeld de gebeurtenissen uit de invoer van weergebeurtenissen om alleen gegevens op te nemen van gebeurtenissen met een temperatuurwaarde kleiner dan 0 en schrijft de resultaten naar de uitvoer van koude temperaturen :

SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0

Er wordt automatisch een veld met de naam EventProcessedUtcTime gemaakt om het tijdstip te definiëren waarop de gebeurtenis wordt verwerkt door uw Azure Stream Analytics-query. U kunt dit veld gebruiken om de tijdstempel van de gebeurtenis te bepalen of u kunt expliciet een ander Datum/tijd-veld opgeven met behulp van de component TIMESTAMP BY , zoals in dit voorbeeld wordt weergegeven. Afhankelijk van de invoer van waaruit de streaminggegevens worden gelezen, kunnen een of meer potentiële tijdstempelvelden automatisch worden gemaakt; Wanneer u bijvoorbeeld een Event Hubs-invoer gebruikt, wordt een veld met de naam EventQueuedUtcTime gegenereerd om de tijd vast te leggen waarop de gebeurtenis is ontvangen in de wachtrij van de Event Hub.

Het veld dat als tijdstempel wordt gebruikt, is belangrijk bij het aggregeren van gegevens over tijdelijke vensters, wat hierna wordt besproken.