Partager via


SUR

✅ Azure Stream Analytics ✅ Fabric Eventstream

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

Vous pouvez utiliser la clause OVER n’importe 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 les lignes directement à partir de l’entrée de requête. Elle n’est pas affectée par les prédicats dans 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 :

  • SOMME
  • AVG
  • MINI
  • 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

Les arguments

<CLAUSE PARTITION BY>

Spécifie que seules les lignes ayant 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 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 que les lignes soient incluses 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, elle diffère 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

Lancez 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