Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Funzioni finestra
Le funzioni della finestra eseguono calcoli tra le righe del risultato della query. Vengono eseguite dopo la HAVING clausola ma prima della clausola ORDER BY. L'invocazione di una funzione window richiede una sintassi speciale che utilizza la OVER clausola per specificare la finestra. Una finestra ha tre componenti:
-
La specifica della partizione, che separa le righe di input in partizioni diverse. Questo è analogo al modo in cui la clausola GROUP BY separa le righe in diversi gruppi per le funzioni aggregate.
-
La specifica di ordinamento, che determina l'ordine in cui le righe di input verranno elaborate dalla funzione finestra.
-
La cornice della finestra, che specifica una finestra scorrevole di righe che devono essere elaborate dalla funzione per una determinata riga. Se il frame non è specificato, il valore predefinito è RANGE UNBOUNDEDPRECEDING, che è lo stesso di. RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW Questo frame contiene tutte le righe dall'inizio della partizione fino all'ultimo peer della riga corrente.
Tutte le funzioni aggregate possono essere utilizzate come funzioni di finestra aggiungendo la clausola. OVER La funzione di aggregazione viene calcolata per ogni riga sulle righe all'interno della cornice della finestra della riga corrente. Oltre alle funzioni aggregate, Timestream for LiveAnalytics supporta le seguenti funzioni di classificazione e valore.
Funzione | Tipo di dati di output | Descrizione |
---|---|---|
cume_dist () |
bigint |
Restituisce la distribuzione cumulativa di un valore in un gruppo di valori. Il risultato è il numero di righe che precedono o coincidono con la riga nella finestra nell'ordine della partizione della finestra diviso per il numero totale di righe nella partizione della finestra. Pertanto, tutti i valori di parità presenti nell'ordinamento verranno restituiti allo stesso valore di distribuzione. |
dense_rank () |
bigint |
Restituisce il rango di un valore in un gruppo di valori. È simile a rank (), tranne per il fatto che i valori di parità non producono spazi vuoti nella sequenza. |
intile (n) |
bigint |
Divide le righe per ogni partizione di finestra in n bucket che vanno da 1 a un massimo n. I valori del bucket differiranno al massimo di 1. Se il numero di righe nella partizione non si divide equamente nel numero di bucket, i valori rimanenti vengono distribuiti uno per bucket, a partire dal primo bucket. |
percent_rank () |
double |
Restituisce la classificazione percentuale di un valore in un gruppo di valori. Il risultato è (r - 1)/(n - 1) dove r è il rango () della riga e n è il numero totale di righe nella partizione della finestra. |
rango () |
bigint |
Restituisce il rango di un valore in un gruppo di valori. Il rango è uno più il numero di righe che precedono la riga che non sono uguali alla riga. Pertanto, i valori di parità nell'ordine produrranno lacune nella sequenza. La classificazione viene eseguita per ogni partizione di finestra. |
numero_riga () |
bigint |
Restituisce un numero sequenziale univoco per ogni riga, a partire da uno, in base all'ordine delle righe all'interno della partizione della finestra. |
primo_valore (x) |
[uguale all'input] |
Restituisce il primo valore della finestra. Questa funzione è limitata alla cornice della finestra. La funzione accetta un'espressione o un obiettivo come parametro. |
last_value (x) |
[uguale all'input] |
Restituisce l'ultimo valore della finestra. Questa funzione è limitata alla cornice della finestra. La funzione accetta un'espressione o un obiettivo come parametro. |
nth_value (x, offset) |
[uguale all'input] |
Restituisce il valore all'offset specificato dall'inizio della finestra. Gli offset partono da 1. L'offset può essere qualsiasi espressione scalare. Se l'offset è nullo o maggiore del numero di valori nella finestra, viene restituito null. È un errore che l'offset sia zero o negativo. La funzione accetta un'espressione o un obiettivo come primo parametro. |
lead (x [, offset [, default_value]]) |
[uguale all'input] |
Restituisce il valore nelle righe di offset dopo la riga corrente nella finestra. Gli offset iniziano da 0, che è la riga corrente. L'offset può essere qualsiasi espressione scalare. L'offset predefinito è 1. Se l'offset è nullo o maggiore della finestra, viene restituito il valore default_value o, se non è specificato, viene restituito null. La funzione accetta un'espressione o un obiettivo come primo parametro. |
lag (x [, offset [, valore_predefinito]]) |
[uguale all'input] |
Restituisce il valore nelle righe di offset prima della riga corrente nella finestra Offsets start at 0, che è la riga corrente. L'offset può essere qualsiasi espressione scalare. L'offset predefinito è 1. Se l'offset è nullo o maggiore della finestra, viene restituito il valore default_value o, se non è specificato, viene restituito null. La funzione accetta un'espressione o un obiettivo come primo parametro. |