Uso del operador summarize
El operador de recuento con sus variaciones crea una nueva columna con el resultado calculado para los campos especificados.
La primera instrucción que aparece a continuación devuelve una columna que es una lista única de valores de la columna Activity.
La segunda instrucción devuelve un recuento de filas SecurityEvent donde EventID es igual a 4688 y el recuento se agrupa por Process y Computer. Debido a la cláusula by, el conjunto de resultados contendrá tres columnas: Process, Computer, Count.
Ejecute cada consulta por separado para ver los resultados.
SecurityEvent | summarize by Activity
SecurityEvent
| where EventID == "4688"
| summarize count() by Process, Computer
El ejemplo siguiente es una lista parcial de las funciones de agregado simples más comunes que se usan con el operador summarize.
Funciones | Descripción |
---|---|
count(), countif() | Devuelve un recuento de los registros por grupo de resumen |
dcount(), dcountif() | Devuelve una estimación del número de valores únicos que toma una expresión escalar en el grupo de resumen. |
avg(), avgif() | Calcula el promedio de Expr en el grupo. |
max(), maxif() | Devuelve el valor máximo del grupo. |
min(), minif() | Devuelve el valor mínimo del grupo. |
percentile() | Devuelve una estimación para el percentil del rango más cercano especificado de la población definida por Expr. La precisión depende de la densidad de población en la región del percentil. |
stdev(), stdevif() | Calcula la desviación estándar de Expr en el grupo, considerando el grupo como una muestra. |
sum(), sumif() | Calcula la suma de Expr en el grupo. |
variance(), varianceif() | Calcula la desviación estándar de Expr en el grupo, considerando el grupo como una muestra. |
Ejemplo de la función count
A una columna de función de agregado se le puede dar un nombre explícitamente incluyendo "fieldname=" antes de la función de agregado.
La instrucción KQL devuelve tres columnas: "cnt", "AccountType" y "Computer". El nombre del campo "cnt" reemplaza el nombre predeterminado "count_".
SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == 4624
| summarize cnt=count() by AccountType, Computer
Ejemplo de la función <dcount>
En el ejemplo siguiente se devuelve un recuento de direcciones IP únicas.
SecurityEvent
| summarize dcount(IpAddress)
Veamos un ejemplo real.
La siguiente instrucción es una regla para detectar errores de contraseña no válida en varias aplicaciones para la misma cuenta.
El operador where en ResultDescription filtra el conjunto de resultados que incluyen "Contraseña no válida". A continuación, la instrucción "summarize" genera un recuento de valores únicos de nombres de aplicación y los agrupa por usuario y dirección IP. Por último, se realiza una comprobación con una variable creada (threshold) para ver si el número supera la cantidad permitida.
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