Sdílet prostřednictvím


OVER (Azure Stream Analytics)

Pro každý řádek klauzule OVER určuje seskupení řádků před použitím přidružené agregační nebo analytické funkce.

Klauzuli OVER můžete použít všude, kde je skalární funkce povolená. Můžete například použít klauzuli OVER v klauzulích SELECT, WHERE, JOIN nebo GROUP BY.

Klauzule OVER seskupuje řádky přímo ze vstupu dotazu. Není ovlivněn predikáty v klauzuli WHERE, podmínky spojení v klauzuli JOIN ani podmínky seskupení v klauzuli GROUP BY.

V současné době jsou s klauzulí OVER podporovány následující agregační funkce:

  • SUM
  • PRŮMĚR
  • MIN
  • MAX

Syntaxe

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

Argumenty

<Klauzule PARTITION BY>

Určuje, že pro agregační nebo analytickou funkci se budou brát v úvahu pouze řádky se stejnými <partition_key> .

<Klauzule LIMIT DURATION>

Určuje, kolik historie z aktuálního řádku je součástí skupiny. Podrobný popis podporovaných jednotek a jejich zkratek najdete v tématu DATEDIFF .

<KLAUZULE WHEN>

Určuje logickou podmínku pro řádky, které mají být zahrnuty do skupiny.

Obecné poznámky

Použití agregační nebo analytické funkce s OVER na sadu výsledků funkce pro vytváření oken může vést k neočekávaným výsledkům. Funkce vytváření oken mění časové razítko událostí, protože každá operace okna vypíše událost na konci okna. Aktuální časové razítko události je přístupné pomocí system.timestamp() a po operaci okna se bude lišit od původního atributu času události.

Příklady

Výpočet průměrné teploty za posledních 5 minut na senzor:

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

Vyvolání upozornění, pokud prostředek během poslední hodiny není v pořádku:

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

Viz také

Analytické funkce
Agregační funkce