Condividi tramite


OVER (Analisi di flusso di Azure)

Per ogni riga, la clausola OVER determina il raggruppamento di righe prima che venga applicata una funzione di aggregazione o analisi associata.

È possibile usare la clausola OVER ovunque sia consentita una funzione scalare. Ad esempio, è possibile usare la clausola OVER nelle clausole SELECT, WHERE, JOIN o GROUP BY.

La clausola OVER raggruppa righe direttamente dall'input della query. Non è interessato dai predicati nella clausola WHERE, dalle condizioni di join nella clausola JOIN o dalle condizioni di raggruppamento nella clausola GROUP BY.

Attualmente, le funzioni di aggregazione seguenti sono supportate con la clausola OVER:

  • SUM
  • MEDIA
  • MIN
  • MAX

Sintassi

OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])

<PARTITION BY clause> ::== PARTITION BY partition_key, ... [n]

<LIMIT DURATION clause> ::== LIMIT DURATION (unit, length)

<WHEN clause> ::== WHEN boolean_expression

Argomenti

<Clausola PARTITION BY>

Specifica che solo le righe con la stessa <partition_key> verranno considerate per la funzione di aggregazione o analisi.

<Clausola LIMIT DURATION>

Specifica la quantità di cronologia della riga corrente inclusa nel gruppo. Vedere DATAIFF per una descrizione dettagliata delle unità supportate e delle relative abbreviazioni.

<CLAUSOLA WHEN>

Specifica la condizione booleana per le righe da includere nel gruppo.

Osservazioni generali

L'applicazione di una funzione di aggregazione o analitica con OVER nel set di risultati di una funzione di finestra può produrre risultati imprevisti. Le funzioni di finestra modificano il timestamp degli eventi, poiché ogni evento dell'operazione finestra restituisce l'evento alla fine della finestra. Il timestamp corrente di un evento può essere accessibile con system.timestamp(), dopo un'operazione di finestra diversa dall'attributo ora dell'evento originale.

Esempio

Calcolare la temperatura media negli ultimi 5 minuti, per sensore:

SELECT AVG(temperature) OVER (PARTITION BY id LIMIT DURATION (minute, 5))
FROM input

Generare un avviso se la risorsa non è stata integra nell'ultima ora:

SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0

Vedere anche

Funzioni di analisi
Funzioni di aggregazione