Usar o operador summarize

Concluído

Você pode usar o operador de resumo com outros operadores, como o operador de contagem. O operador de contagem com suas variações cria uma nova coluna com o resultado calculado para os campos especificados.

A primeira declaração abaixo retorna uma coluna que é uma lista única de valores da coluna 'Atividade'.

A segunda instrução retorna uma contagem de linhas SecurityEvent em que EventID é igual a 4688 e a contagem é agrupada por Processo e Computador. Devido à cláusula by, o conjunto de resultados contém três colunas: Processo, Computador, Contagem.

Execute cada consulta separadamente e veja os resultados.

SecurityEvent | summarize by Activity

SecurityEvent
| where EventID == "4688"
| summarize count() by Process, Computer

O exemplo a seguir é uma lista parcial das funções de agregação simples mais comuns usadas com o operador de resumo.

Função(ões) Descrição
count(), countif() Devolve uma contagem dos registos por grupo de resumo
dcount(), dcountif() Retorna uma estimativa para o número de valores distintos obtidos por uma expressão escalar no grupo de resumo.
avg(), avgif() Calcula a média de Expr em todo o grupo.
max(), maxif() Retorna o valor máximo em todo o grupo.
min(), minif() Retorna o valor mínimo em todo o grupo.
percentile() Retorna uma estimativa para o percentil de classificação mais próximo especificado da população definida pelo Expr. A precisão depende da densidade da população na região do percentil.
stdev(), stdevif() Calcula o desvio padrão do Expr em todo o grupo, considerando o grupo como um exemplo.
sum(), sumif() Calcula a soma do Expr em todo o grupo.
variação(), varianceif() Calcula a variação de Expr em todo o grupo, considerando o grupo como um exemplo.

Exemplo da função count

Uma coluna de função de agregação pode ser nomeada explicitamente incluindo o "fieldname=" antes da função de agregação.

A instrução KQL retorna três colunas: "cnt", "AccountType" e "Computer". O nome do campo "cnt" substitui o nome padrão "count_".

SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == 4624
| summarize cnt=count() by AccountType, Computer

<exemplo de função dcount>

O exemplo a seguir retorna uma contagem de endereços IP exclusivos.

SecurityEvent
| summarize dcount(IpAddress)

Vamos dar uma olhada em um exemplo do mundo real

A instrução a seguir é uma regra para detectar falhas de senha inválidas em vários aplicativos para a mesma conta.

O operador where do ResultDescription filtra o conjunto para resultados que incluem "Senha inválida". Em seguida, a instrução "summarize" produz uma contagem distinta de nomes de aplicativos e agrupa por Usuário e Endereço IP. Por fim, há uma verificação em relação a uma variável criada (limite) para ver se o número excede o valor permitido.

let timeframe = 30d;
let threshold = 1;
SigninLogs
| where TimeGenerated >= ago(timeframe)
| where ResultDescription has "Invalid password"
| summarize applicationCount = dcount(AppDisplayName) by UserPrincipalName, IPAddress
| where applicationCount >= threshold