GROUP, clause
La clause GROUP entraîne la génération d’une notification unique par WMI pour représenter un groupe d’événements. La notification représentative est une instance de la classe système __AggregateEvent. La classe système __AggregateEvent contient deux propriétés : Représentant et NumberOfEvents. La propriété représentant est un objet incorporé qui contient l’une des instances reçues pendant l’intervalle de regroupement spécifié dans la clause WITHIN. Par exemple, si un événement d’agrégation est généré pour notifier les événements de modification d’instance, représentant contient une instance de la classe __InstanceModificationEvent. La propriété NumberOfEvents contient le nombre d’événements reçus pendant l’intervalle de regroupement. L’intervalle de regroupement spécifie la période, après réception d’un événement initial, pendant lequel WMI doit collecter des événements similaires.
La clause GROUP doit contenir une clause WITHIN pour spécifier l’intervalle de regroupement et peut contenir le mot clé BY ou HAVING, ou les deux. La clause GROUP est placée après la clause WHERE, comme indiqué ci-dessous :
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
[HAVING NumberOfEvents operator integer]
La valeur EventClass est la classe d’événements dont l’événement est membre, et valeur est la valeur de la propriété sur laquelle la notification est requise. L’intervalle est un entier non signé qui représente l’intervalle de regroupement après avoir reçu le premier événement. L’entier non signé est un nombre de secondes. La liste des propriétés est une liste délimitée par des virgules d’une ou plusieurs propriétés incluses dans la classe d’événements ; opérateur est un opérateur relationnel ; et entier est un entier 32 bits non signé indiquant un certain nombre d’événements.
Lorsque vous utilisez la clause GROUP, les clauses WHERE, BY et HAVING sont facultatives.
Une utilisation de base de la clause GROUP peut demander un regroupement d’événements dans un intervalle de temps qui commence lorsque le premier événement est reçu. Par exemple, la requête suivante regroupe tous les événements de messagerie envoyés dans les 5 minutes. Au lieu de paginer un utilisateur chaque fois qu’un nouvel e-mail est reçu, le consommateur permanent peut utiliser cette requête pour informer l’utilisateur uniquement si de nouveaux e-mails ont été reçus au cours des 5 dernières minutes.
SELECT * FROM EmailEvent GROUP WITHIN 300
Si des informations plus détaillées sont requises, les événements peuvent être regroupés par une ou plusieurs propriétés de la classe d’événements. La requête suivante demande que les événements de messagerie soient combinés avec d’autres événements qui ont la même valeur dans la propriété Sender :
SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender
Un niveau de détail encore plus élevé peut être atteint en ajoutant une clause WHERE. Par exemple, la requête suivante informe un utilisateur d’un nouvel e-mail d’un expéditeur particulier qui est arrivé au cours des 10 dernières minutes, combiné à d’autres événements qui ont la même valeur dans la propriété Importance :
SELECT * FROM EventClass WHERE Sender = "MyBoss"
GROUP WITHIN 300 BY Importance