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.
✅ Flusso di eventi dell'infrastruttura di Analisi ✅ di flusso di Azure
Eventi del gruppo di finestre di sessione che arrivano in momenti simili, filtrando i periodi di tempo in cui non sono presenti dati. La funzione della finestra di sessione ha tre parametri principali: timeout, durata massima e chiave di partizionamento (facoltativo).
Il diagramma seguente illustra un flusso con una serie di eventi e il modo in cui vengono mappati in finestre di sessione di 5 minuti di timeout e durata massima di 10 minuti.
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 continuano a verificarsi eventi entro il timeout specificato, la finestra della sessione continuerà a estendersi fino al raggiungimento della durata massima. Si noti che gli intervalli di controllo della durata massima sono impostati sulla stessa dimensione della durata massima specificata. Ad esempio, se la durata massima è 10, verifica se la finestra supera la durata massima verrà eseguita in t = 0, 10, 20, 30 e così via. Ciò significa che la durata effettiva di una finestra di sessione potrebbe quindi essere fino a due volte maxDuration.
Pertanto, matematicamente, la finestra della sessione termina se la condizione seguente è soddisfatta:
di
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. Ciò è utile per i casi in cui sono necessarie finestre di sessione diverse per utenti o dispositivi diversi.
Sintassi
{SESSIONWINDOW | SESSION} (timeunit, timeoutSize, maxDurationSize) [OVER (PARTITION BY partitionKey)]
{SESSIONWINDOW | SESSION} (Timeout(timeunit , timeoutSize), MaxDuration(timeunit, maxDurationSize)) [OVER (PARTITION BY partitionKey)]
Annotazioni
La finestra sessione può essere usata nei due modi precedenti.
Argomenti
timeunit Unità di tempo per le finestre. Nella tabella seguente sono elencati tutti gli argomenti timeunit validi.
| Timeunit | Abbreviazioni |
|---|---|
| giorno | dd, d |
| ora | Hh |
| minuto | mi, n |
| secondo | ss, s |
| millisecondo | ms |
| microsecondo | Mcs |
timeoutsize
Intero grande che descrive le dimensioni della distanza della finestra della sessione. I dati che si verificano all'interno delle dimensioni del gap vengono raggruppati nella stessa finestra.
maxdurationsize
Se le dimensioni totali della finestra superano il valore maxDurationSize specificato in un punto di controllo, la finestra viene chiusa e viene aperta una nuova finestra nello stesso punto. Attualmente, le dimensioni dell'intervallo di controllo sono uguali a maxDurationSize.
partitionkey
Parametro facoltativo che specifica la chiave su cui opera la finestra della sessione. Se specificato, la finestra raggruppa solo gli eventi della stessa chiave.
Esempi
Si supponga di avere i dati JSON seguenti:
[
// time: the timestamp when the user clicks on the link
// user_id: the id of the user
// url: the url the user clicked on
{
"time": "2017-01-26T00:00:00.0000000z",
"user_id": 0,
"url": "www.example.com/a.html"
},
{
"time": "2017-01-26T00:00:20.0000000z",
"user_id": 0,
"url": "www.example.com/b.html"
},
{
"time": "2017-01-26T00:00:55.0000000z",
"user_id": 1,
"url": "www.example.com/c.html"
},
// ...
]
Per misurare la durata di ogni sessione utente, è possibile usare la query seguente:
CREATE TABLE localinput(time DATETIME, user_id BIGINT, url NVARCHAR(MAX))
SELECT
user_id,
MIN(time) AS window_start,
System.Timestamp() AS window_end,
DATEDIFF(s, MIN(time), System.Timestamp()) AS duration_in_seconds
FROM localinput TIMESTAMP BY time
GROUP BY user_id, SessionWindow(minute, 2, 60) OVER (PARTITION BY user_id)
La query precedente crea una finestra di sessione con un timeout di 2 minuti, una durata massima di 60 minuti e la chiave di partizionamento di user_id. Ciò significa che verranno create finestre di sessione indipendenti per ogni user_id. Per ogni finestra, questa query genererà l'output che contiene il user_id, l'ora di inizio della finestra (window_start), la fine della finestra (window_end) e la durata totale della sessione utente (duration_in_seconds).