operador de resumo
Sintaxe
T | summarize [SummarizeParameters] [[ Column =] Agregação [, ...]] [ by [ Column =] GroupExpression [, ...]]
Argumentos
- Coluna: Nome opcional para uma coluna de resultados. Padronizado para um nome derivado da expressão
- Agregação: Uma chamada para uma função de agregação como
count()ouavg(), com nomes de colunas como argumentos. Consulte a lista de funções de agregação. - GroupExpression: uma expressão escalar que pode fazer referência aos dados de entrada. A saída terá tantos registros quantos houver valores distintos de todas as expressões de grupo
- SummarizeParameters: Zero ou mais parâmetros (separados por espaço) no formato de Nome
=Valor que controlam o comportamento.. Os seguintes parâmetros são suportados:
Nota
Quando a tabela de entrada está vazia, a saída depende se GroupExpression é usado:
- Se o GroupExpression não for fornecido, a saída será uma única linha (vazia).
- Se GroupExpression for fornecido, a saída não terá linhas.
Devoluções
As linhas de entrada são organizadas em grupos que possuem os mesmos valores das expressões by Em seguida, as funções de agregação especificadas são calculadas sobre cada grupo, produzindo uma linha para cada grupo.. O resultado contém as colunas by e também pelo menos uma coluna para cada agregado calculado. (Algumas funções de agregação retornam várias colunas)..
O resultado tem tantas linhas quantas combinações distintas de valores by (que podem ser zero). Se não houver nenhuma chave de grupo fornecida, o resultado terá um único registro.
Para resumir sobre intervalos de valores numéricos, use bin() para reduzir intervalos para valores distintos.
Nota
- Embora seja possível fornecer expressões arbitrárias para as expressões de agregação e agrupamento, é mais eficiente usar nomes de colunas simples ou aplicar
bin()a uma coluna numérica.
Lista de funções de agregação
| Função | Descrição |
|---|---|
| arg_max () | Retorna uma ou mais expressões quando o argumento é maximizado |
| arg_min () | Retorna uma ou mais expressões quando o argumento é minimizado |
| avg () | Retorna um valor médio no grupo |
| avgif () | Retorna um valor médio no grupo (com predicado) |
| binary_all_and | Retorna o valor agregado usando o binário AND do grupo |
| binary_all_or | Retorna o valor agregado usando o binário OR do grupo |
| binary_all_xor | Retorna o valor agregado usando o binário XOR do grupo |
| COUNT() | Retorna uma contagem do grupo |
| countif () | Retorna uma contagem com o predicado do grupo |
| dcount () | Retorna uma contagem aproximada distinta dos elementos do grupo |
| dcountif () | Retorna uma contagem aproximada distinta dos elementos do grupo (com predicado) |
| make_list () | Retorna uma lista de todos os valores dentro do grupo |
| make_list_if () | Retorna uma lista de todos os valores dentro do grupo (com predicado) |
| make_set () | Retorna um conjunto de valores distintos dentro do grupo |
| make_set_if () | Retorna um conjunto de valores distintos dentro do grupo (com predicado) |
| max () | Retorna o valor máximo no grupo |
| maxif () | Retorna o valor máximo no grupo (com predicado) |
| min () | Retorna o valor mínimo no grupo |
| minif () | Retorna o valor mínimo no grupo (com predicado) |
| sum () | Retorna a soma dos elementos dentro do grupo |
| sumif () | Retorna a soma dos elementos dentro do grupo (com predicado) |
| take_any () | Retorna um valor aleatório não vazio para o grupo |
| take_anyif () | Retorna um valor aleatório não vazio para o grupo (com predicado) |
Agrega valores padrão
A tabela a seguir resume os valores padrão de agregações:
| Operador | Valor Padrão |
|---|---|
count(), countif(), dcount(), dcountif() |
0 |
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() |
matriz dinâmica vazia ([]) |
| Todos os outros | nulo |
Ao usar esses agregados sobre entidades que incluem valores nulos, os valores nulos serão ignorados e não participarão do cálculo (veja exemplos abaixo).
Exemplos
Este exemplo simplesmente conta todos os eventos na tabela events
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count()
Resultados
NumEvents |
|---|
4163038 |
Próximo Exemplo
Este exemplo retorna a contagem total de eventos para as últimas 24 horas, categorizados em períodos de 24hr
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count() by HourBucket=bin(original_time, 60m)
| sort by HourBucket desc
| take 5
Resultados
HourBucket |
NumEvents |
|---|---|
2022-06-12 23:00:00.000 |
8374746 |
2022-06-12 22:00:00.000 |
8214746 |
2022-06-12 21:00:00.000 |
7374746 |
2022-06-12 20:00:00.000 |
9938733 |
2022-06-12 19:00:00.000 |
0 |
2022-06-12 18:00:00.000 |
1 |
Uma tabela que mostra quantos eventos foram alimentados em cada intervalo de uma hora nas últimas 24 horas. A tabela conterá duas colunas, EventCount que é a contagem dos eventos para a hora e HourBucket é categorizado espaço de tempo de agregação para os eventos.
Combinação única
Determine quais combinações exclusivas de eventos name e severity existem em uma tabela Não há funções de agregação, apenas chaves de grupo. A saída apenas mostrará as colunas para esses resultados:
events
| project severity, name, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize by name, severity
| sort by name asc, severity desc
| take 5
Resultados
name |
severity |
|---|---|
(Primary) Failover cable OK |
10 |
(Primary) Failover cable Not OK |
6 |
(Primary) Failover message block alloc failed |
7 |
30419 Internet Explorer 8 XSS Attack |
8 |
A fatal alert was generated and sent to the remote endpoint |
7 |
Registro de data e hora mínimo e máximo
Localiza o registro de data e hora mínimo e máximo de todos os eventos na tabela events Não há nenhuma cláusula group-by, portanto, há apenas uma linha na saída:
events
| project severity, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize MinTime=min(original_time), MaxTime=max(original_time)
Resultados
Min |
Max |
|---|---|
1975-06-09 09:21:45 |
2015-12-24 23:45:00 |
Contagem Distinta
Crie uma linha para cada name, mostrando uma contagem de src_ip distintos os eventos alimentado
events
| project name, severity, original_time, src_ip
| where original_time > ago(24h)
| where severity > 6 and isnotempty(name) and isnotempty(src_ip)
| summarize SrcIpCount=count_distinct(src_ip) by Name=name
| order by SrcIpCount desc
| take 5
Resultados
| Nome | Contagem de SrcIp |
|---|---|
| O processamento da Política de Grupo falhou | 385 |
| Violação de Proteção de Conteúdo. | 367 |
| Violação de Execução do Servidor da Web | 312 |
| Bypass de autenticação do servidor Openfire Jabber | 305 |
| Negar verificação de caminho reverso do protocolo | 290 |