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
Le finestre snapshot raggruppano eventi 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.
Il diagramma seguente illustra un flusso con una serie di eventi e come vengono mappati in finestre snapshot.
System.Timestamp() può essere considerato nella clausola GROUP BY come una colonna chiave o una definizione di finestra snapshot perché raggruppa gli eventi in una finestra in base all'uguaglianza dei timestamp. Se combinato con un'altra funzione window, System.Timestamp() viene considerato come una chiave e non come definizione di finestra. System.Timestamp() non genera un errore quando viene usato con altre funzioni finestra a differenza di quando nella clausola GROUP BY vengono usate più funzioni finestra. L'uso di System.Timestamp() e di una funzione window in GROUP BY può essere utile per raggruppare i risultati.
Qualsiasi espressione che contiene System.Timestamp() non viene considerata una finestra. Ad esempio, GROUP BY DATEPART(minute, System.Timestamp()) ha esito negativo e viene visualizzato l'errore "è necessario specificare una finestra".
Sintassi
System.Timestamp()
Esempi
Esempio di base
L'esempio seguente restituisce il numero di tweet con lo stesso tipo di argomento che si verifica esattamente nello stesso momento:
SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Esempio di snapshot di finestra a cascata
Un utilizzo comune per le finestre snapshot consiste nell'aggregare gli eventi dopo che sono stati raggruppati in un singolo timestamp tramite una funzione finestra precedente, ad esempio TumblingWindow di seguito.
L'esempio seguente restituisce il numero di tweet con lo stesso tipo di argomento per lo stesso utente entro intervalli di 30 minuti:
WITH PerInterval AS (
SELECT Topic, User, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval
Per trovare il numero di utenti e i tweet totali per argomento nello stesso intervallo, è possibile usare il risultato della query precedente. A causa dei risultati della finestra a cascata, tutti i timestamp saranno allineati al limite di 30 minuti, è possibile usare una finestra snapshot per restituire eventi a ogni limite poiché hanno tutti lo stesso valore di timestamp.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()
La query precedente ha restituito il numero di utenti e i tweet totali per argomento entro lo stesso intervallo di 30 minuti. Per ottenere gli stessi risultati una volta per 2 ore, aggiungere una finestra a cascata di 2 ore alla clausola GROUP BY.
La query seguente restituisce i risultati di tutti e quattro gli intervalli di 30 minuti alla fine di ogni finestra di 2 ore.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)
Esempio di finestre di aggregazione
È possibile usare System.Timestamp() come una delle finestre nel costrutto Windows() aggregato.
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
System.Timestamp())