HAVING 句
HAVING 句は、WITHIN 句で指定されたグループ化間隔中に受信したイベントをフィルター処理するために使用されます。 たとえば、SELECT ステートメントは、過去 30 秒間に少なくとも 5 つのイベントがない限り何も返さないように構築できます。
WITHIN 句は、GROUP 句の後に SELECT ステートメントの直後に続きます。 HAVING 句は、GROUP 句によって作成されたグループがメンバーである __AggregateEvent システム クラスの NumberOfEvents プロパティに対して動作します。 HAVING 句では、すべての標準関係演算子を使用できます。
構文は次のとおりです。
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
HAVING NumberOfEvents operator constant
EventClass 値はイベントがメンバーであるイベント クラスであり、値 は通知が必要なプロパティの値です。 間隔は、最初のイベントを受信した後のグループ化間隔 (秒単位) を表す符号なし整数です。 プロパティ リストは、イベント クラスに含まれる 1 つ以上のプロパティのコンマ区切りのリストです。 演算子は任意の関係演算子です。 定数値は、フィルター処理に使用されるイベントの数を示す任意の符号なし 32 ビット整数です。
HAVING 句を使用する場合、WHERE 句と BY 句は省略可能です。
次のイベント クエリは、WMI が受信する最初のイベントの 300 秒後に、EmailEvent クラスの通知を 1 つのイベントにグループ化することを要求します。 また、クエリ要求では、__AGGREGATEEVENT インスタンスは、WMI がその 300 秒で 5 つ以上の電子メール イベントを受信した場合にのみ配信する必要があります。
SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5
次の例では、TargetInstanceによって 600 秒 (つまり 10 分) で受信したすべてのイベントをグループ化します。SourceNameプロパティを します。 この例では、同じソースから受信した Win32_NTLogEvent イベントの数が 25 を超える場合にのみ、集計イベントが配信されます。 ISA 演算子を使用すると、__InstanceCreationEvent システム クラスの TargetInstance プロパティが Win32_NTLogEvent クラスのインスタンスを表します。
SELECT * FROM __InstanceCreationEvent
WHERE TargetInstance ISA "Win32_NTLogEvent"
GROUP WITHIN 600 BY TargetInstance.SourceName
HAVING NumberOfEvents > 25