Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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.
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.
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.
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).
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 .
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:
- 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