Freigeben über


GROUP-Klausel

Die GROUP-Klausel bewirkt, dass WMI eine einzelne Benachrichtigung generiert, um eine Gruppe von Ereignissen darzustellen. Die repräsentative Benachrichtigung ist eine Instanz der __AggregateEvent Systemklasse. Die __AggregateEvent Systemklasse enthält zwei Eigenschaften: Representative und NumberOfEvents. Die eigenschaft Representative ist ein eingebettetes Objekt, das eine der Instanzen enthält, die während des in der WITHIN-Klauselangegebenen Gruppierungsintervalls empfangen wurden. Wenn beispielsweise ein Aggregatereignis generiert wird, um Instanzänderungsereignisse zu benachrichtigen, enthält Representative eine Instanz der __InstanceModificationEvent Klasse. Die NumberOfEvents- -Eigenschaft enthält die Anzahl der Ereignisse, die während des Gruppierungsintervalls empfangen werden. Das Gruppierungsintervall gibt den Zeitraum an, nach dem ein anfängliches Ereignis empfangen wurde, in dem WMI ähnliche Ereignisse sammeln soll.

Die GROUP-Klausel muss eine WITHIN-Klausel enthalten, um das Gruppierungsintervall anzugeben und das BY- oder HAVING-Schlüsselwort oder beides enthalten kann. Die GROUP-Klausel wird wie folgt nach der WHERE-Klausel platziert:

SELECT * FROM EventClass [WHERE property = value] 
    GROUP WITHIN interval [BY property_list]
    [HAVING NumberOfEvents operator integer]

Der EventClass- Wert ist die Ereignisklasse, deren Ereignis Mitglied ist, und Wert ist der Wert für die Eigenschaft, für die Benachrichtigung erforderlich ist. Das Intervall ist eine ganze Zahl ohne Vorzeichen, die das Gruppierungsintervall darstellt, nachdem das erste Ereignis empfangen wurde. Die ganze Zahl ohne Vorzeichen ist eine Anzahl von Sekunden. Die Eigenschaftsliste ist eine durch Trennzeichen getrennte Liste einer oder mehrerer Eigenschaften, die in der Ereignisklasse enthalten sind; Operator ist ein relationaler Operator; und ganze Zahl ist eine nicht signierte 32-Bit-Ganzzahl, die eine Anzahl von Ereignissen angibt.

Bei Verwendung der GROUP-Klausel sind die WHERE-, BY- und HAVING-Klauseln optional.

Eine grundlegende Verwendung der GROUP-Klausel kann eine Gruppierung von Ereignissen innerhalb eines Zeitintervalls anfordern, das beginnt, wenn das erste Ereignis empfangen wird. Die folgende Abfrage gruppiert beispielsweise alle E-Mail-Ereignisse, die innerhalb von 5 Minuten gesendet wurden. Anstatt einen Benutzer jedes Mal auszublättern, wenn eine neue E-Mail empfangen wird, kann der permanente Verbraucher diese Abfrage verwenden, um den Benutzer nur zu informieren, wenn innerhalb der letzten 5 Minuten neue E-Mails empfangen wurden.

SELECT * FROM EmailEvent GROUP WITHIN 300

Wenn detailliertere Informationen erforderlich sind, können Ereignisse nach einer oder mehreren Eigenschaften der Ereignisklasse gruppiert werden. Die folgende Abfrage fordert an, dass E-Mail-Ereignisse mit anderen Ereignissen kombiniert werden, die denselben Wert in der eigenschaft Sender haben:

SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender

Eine noch größere Detailebene kann durch Hinzufügen einer WHERE-Klausel erreicht werden. Die folgende Abfrage benachrichtigt beispielsweise einen Benutzer mit neuen E-Mails von einem bestimmten Absender, der innerhalb der letzten 10 Minuten eingegangen ist, kombiniert mit anderen Ereignissen, die denselben Wert in der Eigenschaft Importance haben:

SELECT * FROM EventClass WHERE Sender = "MyBoss" 
  GROUP WITHIN 300 BY Importance