Usar o operador summarize
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