Comprendere l'elaborazione di eventi
Analisi di flusso di Azure è un servizio per l'elaborazione di eventi complessi e l'analisi dei dati di streaming. Analisi di flusso viene usato per:
- Inserire dati da un input, ad esempio un Event Hub di Azure, un IoT Hub di Azure o un contenitore blob di Archiviazione di Azure.
- Elaborare i dati usando una query per selezionare, proiettare e aggregare i valori dei dati.
- Scrivere i risultati in un output, ad esempio Azure Data Lake Gen 2, database SQL di Azure, Azure Synapse Analytics, Funzioni di Azure, hub eventi di Azure, Microsoft Power BI o altri.
Una volta avviata, una query di Analisi di flusso verrà eseguita in modo perpetuo, elaborando nuovi dati man mano che arrivano nell'input e archiviando i risultati nell'output.
L'Analisi di flusso garantisce l'elaborazione degli eventi esattamente una volta e almeno una volta il recapito degli eventi, in modo che gli eventi non vengano mai persi. Ha funzionalità di ripristino integrate per il caso in cui il recapito di un evento fallisca. Analisi di flusso offre anche checkpoint predefiniti per gestire lo stato del processo e produce risultati ripetibili. Poiché Analisi di flusso di Azure è una soluzione PaaS (Platform-as-a-Service), è completamente gestita e altamente affidabile. L'integrazione predefinita con varie origini e destinazioni offre un modello di programmabilità flessibile. Il motore di Analisi di flusso abilita il calcolo in memoria, quindi offre prestazioni elevate.
Processi e cluster di Analisi di flusso di Azure
Il modo più semplice per usare Analisi di flusso di Azure consiste nel creare un processo di Analisi di flusso in una sottoscrizione di Azure, configurare gli input e gli output e definire la query che verrà usata dal processo per elaborare i dati. La query viene espressa usando la sintassi SQL (Structured Query Language) e può incorporare dati di riferimento statici da più origini dati per fornire valori di ricerca che possono essere combinati con i dati di streaming inseriti da un input.
Se i requisiti del processo di flusso sono complessi o a elevato utilizzo di risorse, è possibile creare un cluster di analisi di flusso che usa lo stesso motore di elaborazione sottostante di un processo di Analisi di flusso, ma in un tenant dedicato (in modo che l'elaborazione non sia interessata da altri clienti) e con scalabilità configurabile che consente di definire il giusto equilibrio tra velocità effettiva e costo per lo scenario specifico.
Input
Analisi di flusso di Azure può inserire dati dai tipi di input seguenti:
- Hub eventi di Azure
- Hub IoT di Azure
- Archiviazione BLOB di Azure
- Azure Data Lake Storage Gen2
Gli input vengono in genere usati per fare riferimento a un'origine di dati di streaming, che viene elaborata quando vengono aggiunti nuovi record di eventi. Inoltre, è possibile definire input di riferimento usati per inserire dati statici per aumentare i dati del flusso di eventi in tempo reale. Ad esempio, è possibile inserire un flusso di dati di osservazione meteo in tempo reale che includono un ID univoco per ogni stazione meteo e aumentare i dati con un input di riferimento statico che corrisponde all'ID della stazione meteo a un nome più significativo.
Risultati
Gli output sono destinazioni a cui vengono inviati i risultati dell'elaborazione del flusso. Analisi di flusso di Azure supporta un'ampia gamma di output, che possono essere usati per:
- Rendere persistenti i risultati dell'elaborazione del flusso per ulteriori analisi; ad esempio caricandoli in un data lake o in un data warehouse.
- Visualizzare una visualizzazione in tempo reale del flusso di dati; ad esempio aggiungendo dati a un set di dati in Microsoft Power BI.
- Generare eventi filtrati o riepilogati per l'elaborazione downstream; ad esempio scrivendo i risultati dell'elaborazione del flusso in un hub eventi.
Interrogazioni
La logica di trattamento del flusso è racchiusa in una query. Le query vengono definite usando istruzioni SQL che selezionano i campi dati FROM uno o più input, filtrano o aggregano i dati e scrivono i risultati in un output. La query seguente, ad esempio, filtra gli eventi dall'input degli eventi meteo per includere solo i dati degli eventi con un valore di temperatura minore di 0 e scrive i risultati nell'output di tempe fredde :
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Viene creato automaticamente un campo denominato EventProcessedUtcTime per definire l'ora in cui l'evento viene elaborato dalla query di Analisi di flusso di Azure. È possibile utilizzare questo campo per determinare il timestamp dell'evento oppure specificare in modo esplicito un altro campo DateTime usando la clausola TIMESTAMP BY , come illustrato in questo esempio. A seconda dell'input da cui vengono letti i dati di streaming, è possibile creare automaticamente uno o più campi timestamp potenziali; Ad esempio, quando si usa un input di Hub eventi , viene generato un campo denominato EventQueuedUtcTime per registrare l'ora in cui l'evento è stato ricevuto nella coda dell'hub eventi.
Il campo usato come timestamp è importante quando si aggregano i dati in finestre temporali, come illustrato di seguito.