Condividi tramite


Introduzione alle funzioni di finestra di Analisi di Flusso

Negli scenari di streaming temporale, un modello comune consiste nell'eseguire operazioni sui dati contenuti nelle finestre temporali. Analisi di flusso offre il supporto nativo per le funzioni di windowing, quindi è possibile creare processi di elaborazione di flussi complessi con un impegno minimo.

Esistono cinque tipi di finestre temporali:

Usare le funzioni della finestra nella clausola GROUP BY della sintassi di query nei processi di Analisi di flusso. È anche possibile aggregare gli eventi su più finestre usando la funzione Windows().

Tutte le operazioni di windowing generano risultati alla fine della finestra. Quando si avvia un processo di analisi di flusso, è possibile specificare l'ora di inizio dell'output del processo. Il sistema recupera automaticamente gli eventi precedenti nei flussi in ingresso per restituire la prima finestra al momento specificato. Ad esempio, quando si inizia con l'opzione Now , inizia a generare dati immediatamente. L'output della finestra è 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.

Diagramma che mostra il concetto di funzioni finestra di Analisi di flusso.

Finestra a cascata

Usare le funzioni di finestra a cascata per segmentare un flusso di dati in segmenti temporali distinti e per eseguire una funzione su tali segmenti.

I principali differenziatori di una finestra a cascata sono:

  • Non si ripetono.
  • Non si sovrappongono.
  • Un evento non può appartenere a più di una finestra a cascata.

Diagramma che mostra un esempio di finestra a cascata di Analisi di flusso.

Ecco i dati di input per l'esempio:

Timbro CreatedAt TimeZone
1 2021-10-26T10:15:01 Ora Standard del Pacifico
5 2021-10-26T10:15:03 Ora Standard del Pacifico (PST)
4 2021-10-26T10:15:06 Orario Standard del Pacifico
... ... ...

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)

Di seguito è riportato l'output di esempio:

WindowEndTime TimeZone Conteggio
2021-10-26T10:15:10 Ora Standard del Pacifico (PST) 5
2021-10-26T10:15:20 Ora Standard del Pacifico 2
2021-10-26T10:15:30 PST 4

Finestra di salto

Le funzioni finestra a salto saltano in avanti nel tempo per un periodo fisso. Può essere semplice considerarle finestre a cascata che possono sovrapporsi ed essere emesse più spesso rispetto alla dimensione delle finestre. 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.

Diagramma che mostra un esempio della finestra di salto.

Ecco i dati di esempio:

Timbro CreatedAt Argomento
1 2021-10-26T10:15:01 Trasmissione in diretta
5 2021-10-26T10:15:03 Trasmissione in diretta
4 2021-10-26T10:15:06 Trasmissione in diretta
... ... ...

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)

Di seguito è riportato l'output di esempio:

WindowEndTime Argomento Conteggio
2021-10-26T10:15:10 Trasmissione in diretta 5
2021-10-26T10:15:15 Trasmissione in diretta 3
2021-10-26T10:15:20 Trasmissione in diretta 2
2021-10-26T10:15:25 Trasmissione in diretta 4
2021-10-26T10:15:30 Trasmissione in diretta 4

Finestra 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. Simili alle finestre saltanti, gli eventi possono appartenere a più di una finestra scorrevole.

Diagramma che mostra un esempio di finestra scorrevole.

Ecco i dati di input di esempio:

Timbro CreatedAt Argomento
1 2021-10-26T10:15:10 Trasmissione in diretta
5 2021-10-26T10:15:12 Trasmissione in diretta
9 2021-10-26T10:15:15 Trasmissione in diretta
7 2021-10-26T10:15:15 Trasmissione in diretta
8 2021-10-26T10:15:27 Trasmissione in diretta

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

Risultato:

WindowEndTime Argomento Conteggio
2021-10-26T10:15:15 Trasmissione in diretta 4
2021-10-26T10:15:20 Trasmissione in diretta 3

Finestra della sessione

Le funzioni della finestra di sessione raggruppano gli eventi che arrivano in momenti simili. Filtrano i periodi di tempo in cui non sono presenti dati. La funzione della finestra di sessione ha tre parametri principali:

  • Interruzione temporanea
  • Durata massima
  • Chiave di partizionamento (facoltativa).

Diagramma che mostra una finestra di sessione di Analisi di flusso di esempio.

Una finestra di sessione inizia quando si verifica il primo evento. Se si verifica un altro evento entro il timeout specificato dall'ultimo evento inserito, la finestra si estende per includere il nuovo evento. In caso contrario, se non si verificano eventi all'interno del timeout, la finestra si chiude 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 corrispondono alle stesse dimensioni della durata massima specificata. Ad esempio, se la durata massima è 10, le verifiche su se la finestra supera la durata massima vengono eseguite a t = 0, 10, 20, 30 e così via.

Quando si specifica una chiave di partizione, la funzione raggruppa gli eventi in base alla chiave e applica la finestra della sessione a ogni gruppo in modo indipendente. Questo partizionamento è utile per i casi in cui sono necessarie finestre di sessione diverse per utenti o dispositivi diversi.

Ecco i dati di input di esempio:

Timbro CreatedAt Argomento
1 2021-10-26T10:15:01 Trasmissione in diretta
2 2021-10-26T10:15:04 Trasmissione in diretta
3 2021-10-26T10:15:13 Trasmissione in diretta
... ... ...

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)

Risultato:

WindowEndTime Argomento Conteggio
2021-10-26T10:15:09 Trasmissione in diretta 2
2021-10-26T10:15:24 Trasmissione in diretta 4
2021-10-26T10:15:31 Trasmissione in diretta 2
2021-10-26T10:15:39 Trasmissione in diretta 1

Finestra del snapshot

Snapshot raggruppa le finestre di eventi che hanno 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 GROUP BY clausola .

Diagramma che mostra una finestra snapshot di esempio di Steam Analytics.

Ecco i dati di input di esempio:

Timbro CreatedAt Argomento
1 2021-10-26T10:15:04 Trasmissione in diretta
2 2021-10-26T10:15:04 Trasmissione in diretta
3 2021-10-26T10:15:04 Trasmissione in diretta
... ... ...

Ecco la query di esempio:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Di seguito è riportato l'output di esempio:

WindowEndTime Argomento Conteggio
2021-10-26T10:15:04 Trasmissione in diretta 4
2021-10-26T10:15:10 Trasmissione in diretta 2
2021-10-26T10:15:13 Trasmissione in diretta 1
2021-10-26T10:15:22 Trasmissione in diretta 2

Passaggi successivi

Vedere gli articoli seguenti: