Introduzione alle funzioni delle finestre di Analisi di flusso
Negli scenari di flusso tempo eseguire operazioni solo sui dati contenuti in finestre temporali è un modello comune. Analisi di flusso offre supporto nativo per le funzioni delle finestre, consentendo agli sviluppatori di creare processi di elaborazione dei flussi complessi con il minimo sforzo.
Esistono cinque tipi di finestre temporali tra cui scegliere:
Usare le funzioni delle finestre nella clausola GROUP BY della sintassi di query nei processi di Flusso Analitica. È anche possibile aggregare eventi su più finestre usando la funzione Windows().
Tutte le operazioni delle finestre restituiscono i risultati alla fine della finestra. Quando si avvia un processo di analisi di flusso, è possibile specificare l'ora di inizio dell'output del processo e il sistema recupera automaticamente gli eventi precedenti nei flussi in ingresso per restituire la prima finestra all'ora specificata, ad esempio quando si inizia con l'opzione Now, inizia a generare dati immediatamente. L'output della finestra sarà un singolo evento basato sulla funzione di aggregazione usata. L'evento di output ha il timestamp della fine della finestra e tutte le funzioni finestra sono definite con una lunghezza fissa.
Finestra a cascata
Usare le funzioni finestra a cascata per segmentare un flusso di dati in segmenti temporali distinti ed eseguire una funzione su di essi.
I principali differenziatori di una finestra a cascata sono:
- Non si ripetono.
- Non si sovrappongono.
- Un evento non può appartenere a più finestre a cascata.
Ecco i dati di input per l'esempio:
Bollo | CreatedAt | TimeZone |
---|---|---|
1 | 2021-10-26T10:15:01 | PST |
5 | 2021-10-26T10:15:03 | PST |
4 | 2021-10-26T10:15:06 | PST |
... | ... | ... |
Ecco la query di esempio:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Ecco l'output di esempio:
WindowEndTime | TimeZone | Conteggio |
---|---|---|
2021-10-26T10:15:10 | PST | 5 |
2021-10-26T10:15:20 | PST | 2 |
2021-10-26T10:15:30 | PST | 4 |
Finestra di salto
Salto delle funzioni finestra hop in avanti nel tempo per un periodo fisso. Potrebbe essere facile considerarli come finestre a cascata che possono sovrapporsi ed essere generate più spesso delle dimensioni della finestra. Gli eventi possono appartenere a più set di risultati della finestra di salto. Per creare una finestra di salto uguale a una finestra a cascata, specificare dimensioni del salto uguali alle dimensioni della finestra.
Ecco i dati di esempio:
Bollo | CreatedAt | Argomento |
---|---|---|
1 | 2021-10-26T10:15:01 | Streaming |
5 | 2021-10-26T10:15:03 | Streaming |
4 | 2021-10-26T10:15:06 | Streaming |
... | ... | ... |
Ecco la query di esempio:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Ecco l'output di esempio:
WindowEndTime | Argomento | Conteggio |
---|---|---|
2021-10-26T10:15:10 | Streaming | 5 |
2021-10-26T10:15:15 | Streaming | 3 |
2021-10-26T10:15:20 | Streaming | 2 |
2021-10-26T10:15:25 | Streaming | 4 |
2021-10-26T10:15:30 | Streaming | 4 |
Finestra temporale scorrevole
Finestre scorrevoli , a differenza delle finestre a cascata o di salto, generano eventi solo per i punti nel tempo in cui il contenuto della finestra cambia effettivamente. In altre parole, quando un evento entra o esce dalla finestra. Quindi, ogni finestra ha almeno un evento. Analogamente alle finestre di salto, gli eventi possono appartenere a più finestre scorrevoli.
Ecco i dati di input di esempio:
Bollo | CreatedAt | Argomento |
---|---|---|
1 | 2021-10-26T10:15:10 | Streaming |
5 | 2021-10-26T10:15:12 | Streaming |
9 | 2021-10-26T10:15:15 | Streaming |
7 | 2021-10-26T10:15:15 | Streaming |
8 | 2021-10-26T10:15:27 | Streaming |
Ecco la query di esempio:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Output:
WindowEndTime | Argomento | Conteggio |
---|---|---|
2021-10-26T10:15:15 | Streaming | 4 |
2021-10-26T10:15:20 | Streaming | 3 |
Finestra della sessione
Le funzioni della finestra di sessione raggruppano gli eventi che arrivano in momenti simili, filtrando i periodi di tempo in cui non sono presenti dati. Ha tre parametri principali:
- Timeout
- Durata massima
- Chiave di partizionamento (facoltativa).
Una finestra della sessione inizia quando si verifica il primo evento. Se si verifica un altro evento entro il timeout specificato dall'ultimo evento acquisito, la finestra si estende per includere il nuovo evento. In caso contrario, se non si verificano eventi entro il timeout, la finestra viene chiusa al timeout.
Se gli eventi continuano a verificarsi entro il timeout specificato, la finestra della sessione continua a estendersi fino a quando non viene raggiunta la durata massima. Gli intervalli di controllo della durata massima sono impostati in modo da avere lo stesso valore della durata massima specificata. Ad esempio, se la durata massima è 10, verifica se la finestra supera la durata massima si verifica in t = 0, 10, 20, 30 e così via.
Quando viene fornita una chiave di partizione, gli eventi vengono raggruppati tramite la chiave e la finestra della sessione viene applicata indipendentemente a ogni gruppo. Questo partizionamento è utile nei casi in cui sono necessarie finestre sessione diverse per utenti o dispositivi diversi.
Ecco i dati di input di esempio:
Bollo | CreatedAt | Argomento |
---|---|---|
1 | 2021-10-26T10:15:01 | Streaming |
2 | 2021-10-26T10:15:04 | Streaming |
3 | 2021-10-26T10:15:13 | Streaming |
... | ... | ... |
Ecco la query di esempio:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Output:
WindowEndTime | Argomento | Conteggio |
---|---|---|
2021-10-26T10:15:09 | Streaming | 2 |
2021-10-26T10:15:24 | Streaming | 4 |
2021-10-26T10:15:31 | Streaming | 2 |
2021-10-26T10:15:39 | Streaming | 1 |
Finestra snapshot
Eventi del gruppo di finestre snapshot con lo stesso timestamp. A differenza di altri tipi di finestra, che richiedono una funzione finestra specifica ,ad esempio SessionWindow(),è possibile applicare una finestra snapshot aggiungendo System.Timestamp() alla clausola GROUP BY.
Ecco i dati di input di esempio:
Bollo | CreatedAt | Argomento |
---|---|---|
1 | 2021-10-26T10:15:04 | Streaming |
2 | 2021-10-26T10:15:04 | Streaming |
3 | 2021-10-26T10:15:04 | Streaming |
... | ... | ... |
Ecco la query di esempio:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Ecco l'output di esempio:
WindowEndTime | Argomento | Conteggio |
---|---|---|
2021-10-26T10:15:04 | Streaming | 4 |
2021-10-26T10:15:10 | Streaming | 2 |
2021-10-26T10:15:13 | Streaming | 1 |
2021-10-26T10:15:22 | Streaming | 2 |
Passaggi successivi
Fai riferimento ai seguenti articoli:
- Introduzione ad Analisi dei flussi di Azure
- Introduzione all'uso di Analisi dei flussi di Azure
- Ridimensionare i processi di Analisi dei flussi di Azure
- Informazioni di riferimento sul linguaggio di query di Analisi di flusso di Azure
- Informazioni di riferimento sulle API REST di gestione di Analisi di flusso di Azure