OVER (Azure Stream Analytics)

Für jede Zeile bestimmt die OVER-Klausel die Gruppierung von Zeilen, bevor eine zugeordnete Aggregat- oder Analysefunktion angewendet wird.

Sie können die OVER-Klausel überall dort verwenden, wo eine Skalarfunktion zulässig ist. Beispielsweise können Sie die OVER-Klausel in den KLAUSELn SELECT, WHERE, JOIN oder GROUP BY verwenden.

Die OVER-Klausel gruppiert Zeilen direkt aus der Abfrageeingabe. Prädikate in der WHERE-Klausel, Joinbedingungen in der JOIN-Klausel oder Gruppierungsbedingungen in der GROUP BY-Klausel sind nicht betroffen.

Derzeit werden die folgenden Aggregatfunktionen mit der OVER-Klausel unterstützt:

  • SUM
  • DURCHSCHN.
  • MIN
  • MAX

Syntax

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

Argumente

<PARTITION BY-Klausel>

Gibt an, dass nur die Zeilen mit demselben <partition_key> für die Aggregat- oder Analysefunktion berücksichtigt werden.

<LIMIT DURATION-Klausel>

Gibt an, wie viel Verlauf aus der aktuellen Zeile in der Gruppe enthalten ist. Eine ausführliche Beschreibung der unterstützten Einheiten und deren Abkürzungen finden Sie unter DATEDIFF.

<WHEN-KLAUSEL>

Gibt die boolesche Bedingung für die Zeilen an, die in die Gruppe eingeschlossen werden sollen.

Allgemeine Hinweise

Das Anwenden einer Aggregat- oder Analysefunktion mit OVER auf das Resultset einer Fensterfunktion kann zu unerwarteten Ergebnissen führen. Fensterfunktionen ändern den Zeitstempel von Ereignissen, da jeder Fenstervorgang ein Ereignis am Ende des Fensters ausgibt. Auf den aktuellen Zeitstempel eines Ereignisses kann mit system.timestamp()zugegriffen werden. Nach einem Fenstervorgang unterscheidet er sich vom ursprünglichen Ereigniszeit-Attribut.

Beispiele

Berechnen Sie die durchschnittliche Temperatur der letzten 5 Minuten pro Sensor:

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

Auslösen einer Warnung, wenn die Ressource in der letzten Stunde fehlerhaft war:

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

Weitere Informationen

Analysefunktionen
Aggregatfunktionen