Sdílet prostřednictvím


PŘES

✅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

Viz také

analytické funkce
Agregační funkce