GROUP 절

GROUP 절을 사용하면 WMI가 이벤트 그룹을 나타내는 단일 알림을 생성합니다. 대표 알림은 __AggregateEvent 시스템 클래스의 인스턴스입니다. __AggregateEvent 시스템 클래스에는 두 가지 속성인 RepresentativeNumberOfEvents가 포함됩니다. Representative 속성은 WITHIN 절에 지정된 그룹화 간격 동안 받은 인스턴스 중 하나를 포함하는 포함된 개체입니다. 예를 들어 인스턴스 수정 이벤트를 알리기 위해 집계 이벤트가 생성되는 경우 Representative__InstanceModificationEvent 클래스의 인스턴스를 하나 포함합니다. NumberOfEvents 속성에는 그룹화 간격 동안 받은 이벤트 수가 포함됩니다. 그룹화 간격은 WMI가 유사한 이벤트를 수집해야 하는 초기 이벤트를 받은 후의 기간을 지정합니다.

GROUP 절에는 그룹화 간격을 지정하는 WITHIN 절이 포함되어야 하며 BY 또는 HAVING 키워드 또는 둘 다를 포함할 수 있습니다. GROUP 절은 다음과 같이 WHERE 절 다음에 배치됩니다.

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

EventClass 값은 이벤트가 멤버인 이벤트 클래스이며 은 알림이 필요한 속성의 값입니다. 간격은 첫 번째 이벤트를 받은 후의 그룹화 간격을 나타내는 부호 없는 정수입니다. 부호 없는 정수는 초 단위입니다. 속성 목록은 이벤트 클래스에 포함된 하나 이상의 속성에 대한 쉼표로 구분된 목록입니다. 연산자는 관계형 연산자이며 정수는 여러 이벤트를 나타내는 부호 없는 32비트 정수입니다.

GROUP 절을 사용하는 경우 WHERE, BY 및 HAVING 절은 선택 사항입니다.

GROUP 절을 기본적으로 사용하면 첫 번째 이벤트가 수신될 때 시작되는 시간 간격 내에 이벤트 그룹화가 요청될 수 있습니다. 예를 들어 다음 쿼리는 5분 이내에 전송된 모든 이메일 이벤트를 그룹화합니다. 영구 소비자는 새 이메일을 받을 때마다 사용자를 페이징하는 대신, 이 쿼리로 지난 5분 이내에 새 이메일을 받은 경우에만 사용자에게 알릴 수 있습니다.

SELECT * FROM EmailEvent GROUP WITHIN 300

자세한 정보가 필요한 경우 이벤트 클래스의 속성을 하나 이상 사용하여 이벤트를 그룹화할 수 있습니다. 다음 쿼리는 이메일 이벤트를 Sender 속성에 동일한 값을 가진 다른 이벤트와 결합할 것을 요청합니다.

SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender

WHERE 절을 추가해 더 높은 수준의 세부 정보를 얻을 수 있습니다. 예를 들어 다음 쿼리는 지난 10분 이내에 도착한 특정 발신자의 새 이메일을 Importance 속성에 동일한 값을 가진 다른 이벤트와 결합한 사용자에게 알릴 수 있습니다.

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