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.

Diagram that shows the concept of Stream Analytics window functions.

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.

Diagram that shows an example Stream Analytics tumbling window.

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.

Diagram that shows an example of the hopping window.

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.

Diagram that shows an example of a sliding window.

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).

Diagram that shows a sample Stream Analytics session window.

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.

Diagram that shows a sample Steam Analytics snapshot window.

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: