Partilhar via


Cláusula GRUPO

A cláusula GROUP faz com que o WMI gere uma única notificação para representar um grupo de eventos. A notificação representativa é uma instância da classe de sistema __AggregateEvent. A classe de sistema __AggregateEvent contém duas propriedades: Representative e NumberOfEvents. A propriedade Representative é um objeto incorporado que contém uma das instâncias recebidas durante o intervalo de agrupamento especificado na cláusula WITHIN. Por exemplo, se um evento agregado for gerado para notificar eventos de modificação de instância, Representative conterá uma instância da classe __InstanceModificationEvent. A propriedade NumberOfEvents contém o número de eventos recebidos durante o intervalo de agrupamento. O intervalo de agrupamento especifica o período de tempo, após receber um evento inicial, durante o qual o WMI deve coletar eventos semelhantes.

A cláusula GROUP deve conter uma cláusula WITHIN para especificar o intervalo de agrupamento e pode conter a palavra-chave BY ou HAVING ou ambas. A cláusula GROUP é colocada após a cláusula WHERE, como mostrado a seguir:

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

O valor EventClass é a classe de evento da qual o evento é membro, e valor é o valor da propriedade na qual a notificação é necessária. O intervalo é um inteiro não assinado que representa o intervalo de agrupamento após receber o primeiro evento. O inteiro não assinado é um número de segundos. A lista de propriedades é uma lista delimitada por vírgulas de uma ou mais propriedades incluídas na classe de evento; operador é qualquer operador relacional; e inteiro é um inteiro de 32 bits não assinado que indica vários eventos.

Ao usar a cláusula GROUP, as cláusulas WHERE, BY e HAVING são opcionais.

Um uso básico da cláusula GROUP pode solicitar um agrupamento de eventos dentro de um intervalo de tempo que começa quando o primeiro evento é recebido. Por exemplo, a consulta a seguir agrupa todos os eventos de email enviados em 5 minutos. Em vez de paginar um usuário toda vez que um novo e-mail é recebido, o consumidor permanente pode usar essa consulta para informar o usuário somente se um novo e-mail tiver sido recebido nos últimos 5 minutos.

SELECT * FROM EmailEvent GROUP WITHIN 300

Se forem necessárias informações mais detalhadas, os eventos podem ser agrupados por uma ou mais propriedades da classe de evento. A consulta a seguir solicita que os eventos de email sejam combinados com outros eventos que tenham o mesmo valor na propriedade Sender:

SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender

Um nível ainda maior de detalhe pode ser alcançado adicionando uma cláusula WHERE. Por exemplo, a consulta a seguir notifica um usuário sobre um novo e-mail de um remetente específico que chegou nos últimos 10 minutos, combinado com outros eventos que têm o mesmo valor na propriedade Importance:

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