Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
✅Eventstream prostředků infrastruktury Azure Stream Analytics ✅
U každého řádku 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 povolená skalární funkce. Klauzuli OVER můžete například použít 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 nebo seskupování podmínek v klauzuli GROUP BY.
V současné době jsou v klauzuli OVER podporovány následující agregační funkce:
- SOUČET
- PRŮMĚR
- MIN
- Maximální
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 považovat 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 funkcí OVER u sady výsledků funkce vytváření oken může způsobit neočekávané výsledky. Funkce oken mění časové razítko událostí, protože každá operace okna vypíše událost na konci okna. K aktuálnímu časovému razítku události lze získat přístup pomocí system.timestamp() po operaci okna, která se bude lišit od původního atributu času události.
Příklady
Vypočítá průměrnou teplotu za posledních 5 minut na senzor:
SELECT AVG(temperature) OVER (PARTITION BY id LIMIT DURATION (minute, 5))
FROM input
Vyvolání výstrahy v případě, že prostředek není v pořádku za poslední hodinu:
SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0