Partager via


OVER (Azure Stream Analytics)

Pour chaque ligne, la clause OVER détermine le regroupement de lignes avant l’application d’une fonction d’agrégation ou d’analyse associée.

Vous pouvez utiliser la clause OVER partout où une fonction scalaire est autorisée. Par exemple, vous pouvez utiliser la clause OVER dans les clauses SELECT, WHERE, JOIN ou GROUP BY.

La clause OVER regroupe des lignes directement à partir de l’entrée de requête. Elle n’est pas affectée par les prédicats de la clause WHERE, les conditions de jointure dans la clause JOIN ou les conditions de regroupement dans la clause GROUP BY.

Actuellement, les fonctions d’agrégation suivantes sont prises en charge avec la clause OVER :

  • SUM
  • AVG
  • 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

Arguments

<CLAUSE PARTITION BY>

Spécifie que seules les lignes avec le même <partition_key> seront prises en compte pour la fonction d’agrégation ou d’analyse.

<CLAUSE LIMIT DURATION>

Spécifie la quantité d’historique de la ligne actuelle qui est incluse dans le groupe. Consultez DATEDIFF pour obtenir une description détaillée des unités prises en charge et de leurs abréviations.

<WHEN CLAUSE>

Spécifie la condition booléenne pour les lignes à inclure dans le groupe.

Remarques d'ordre général

L’application d’une fonction d’agrégation ou d’analytique avec OVER sur le jeu de résultats d’une fonction de fenêtrage peut produire des résultats inattendus. Les fonctions de fenêtrage modifient l’horodatage des événements, car chaque opération de fenêtre génère un événement à la fin de la fenêtre. L’horodatage actuel d’un événement est accessible avec system.timestamp() ; après une opération de fenêtre, il sera différent de l’attribut d’heure d’événement d’origine.

Exemples

Calculez la température moyenne au cours des 5 dernières minutes, par capteur :

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

Lève une alerte si la ressource n’a pas été saine au cours de la dernière heure :

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

Voir aussi

Fonctions analytiques
Fonctions d’agrégation