Udostępnij za pośrednictwem


OVER (Azure Stream Analytics)

Dla każdego wiersza klauzula OVER określa grupowanie wierszy przed zastosowaniem skojarzonej funkcji agregującej lub analitycznej.

Klauzulę OVER można używać w dowolnym miejscu, w którym jest dozwolona funkcja skalarna. Można na przykład użyć klauzuli OVER w klauzulach SELECT, WHERE, JOIN lub GROUP BY.

Klauzula OVER grupuje wiersze bezpośrednio z danych wejściowych zapytania. Nie ma to wpływu na predykaty w klauzuli WHERE, warunków dołączenia w klauzuli JOIN lub warunków grupowania w klauzuli GROUP BY.

Obecnie następujące funkcje agregujące są obsługiwane za pomocą klauzuli OVER:

  • SUM
  • AVG
  • MIN
  • MAX

Składnia

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

<PARTITION BY, klauzula>

Określa, że tylko wiersze z tym samym <partition_key> będą brane pod uwagę dla funkcji agregującej lub analitycznej.

<KLAUZULA LIMIT DURATION>

Określa, ile historii z bieżącego wiersza znajduje się w grupie. Zobacz DATEDIFF , aby uzyskać szczegółowy opis obsługiwanych jednostek i ich skrótów.

<WHEN, KLAUZULA>

Określa warunek logiczny dla wierszy do ujęć w grupie.

Uwagi ogólne

Zastosowanie funkcji agregującej lub analitycznej z funkcją OVER w zestawie wyników funkcji okien może spowodować nieoczekiwane wyniki. Funkcje okien zmieniają sygnaturę czasową zdarzeń, ponieważ każda operacja okna generuje zdarzenie na końcu okna. Dostęp do bieżącej sygnatury czasowej zdarzenia można uzyskać za pomocą atrybutu system.timestamp(), po operacji okna różni się od oryginalnego atrybutu czasu zdarzenia.

Przykłady

Oblicz średnią temperaturę w ciągu ostatnich 5 minut na czujnik:

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

Zgłaszanie alertu, jeśli zasób był w złej kondycji w ciągu ostatniej godziny:

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

Zobacz też

Funkcje analityczne
Agregujących