Recomendaciones del lenguaje de consulta de Log Analytics para los operadores Summarize y Join
Fecha de publicación: 29 mayo, 2018
En esta actualización se describen las recomendaciones de sintaxis del lenguaje de consulta de Azure Log Analytics y Application Insights para los operadores Summarize y Join. Todavía se admite la sintaxis actual, pero se recomienda encarecidamente que modifique la sintaxis de sus consultas donde proceda en las búsquedas guardadas y alertas para evitar ambigüedad en los resultados.
Si tiene dudas acerca de estas recomendaciones, póngase en contacto con nosotros.
Discretización automática por horas en el operador Summarize
Actualmente, los datos agregados con la clave datetime se agrupan automáticamente en rangos por horas. En este ejemplo, la columna TimeGenerated que se utiliza en el operador Summarize se ha redondeado automáticamente en intervalos por horas:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Estos son los resultados de la consulta:
TimeGenerated [UTC] |
count_ |
2018-02-04T09:00:00.000 2018-02-04T10:00:00.000 2018-02-04T11:00:00.000 2018-02-04T12:00:00.000 2018-02-04T13:00:00.000 2018-02-04T14:00:00.000 2018-02-04T15:00:00.000 2018-02-04T16:00:00.000 2018-02-04T17:00:00.000 2018-02-04T18:00:00.000 |
1,205 1,268 1,234 1,173 1,007 1,042 1,041 1,049 1,090 1,113 |
Acciones recomendadas:
- Si no utiliza la característica de discretización automática, ni en búsquedas guardadas ni en alertas (por ejemplo, utiliza TimeGenerated para resumir):
- No es necesario que haga nada.
- Si no tiene conocimiento de la característica de discretización automática, puede que sus consultas devuelvan resultados con una agregación por horas no prevista:
- Compruebe si los datos se agregan con la clave datetime (por ejemplo, utilice TimeGenerated para resumir). Si es así, corrija las consultas para que usen discretización explícita; por ejemplo, utilice bin(TimeGenerated, 1h) para resumir.
- Si conoce y utiliza la característica de discretización automática:
- Corrija las consultas para que usen discretización explícita; por ejemplo, utilice bin(TimeGenerated, 1h) para resumir.
Expresiones de igualdad en el operador Join
Actualmente, la sintaxis del lenguaje permite el uso de expresiones de igualdad ambiguas, como los atributos Join (por ejemplo, clave1 == clave2) que producen resultados no deseados. Es aconsejable que cambie las expresiones de igualdad ambiguas para evitar este comportamiento.
A continuación se muestra un ejemplo de expresión Join ambigua (suma de la duración de las sesiones diarias por equipo):
SecurityEvent
| where EventID == 4624
| join kind= inner (
SecurityEvent
| where EventID == 4634
) on TargetLogonId == TargetLogonId
| extend Duration = LogoffTime - LogonTime
| summarize sum(Duration) by bin(LogonTime, 1d), Computer
Acciones recomendadas:
- Si no utiliza expresiones de igualdad con operadores Join, ni en búsquedas guardadas ni en alertas:
- No es necesario que haga nada.
- Si utiliza expresiones de igualdad con operadores Join:
- Corrija la sintaxis del operador Join.
- Corrija las consultas. Los nombres de columna deben completarse con la tabla de propietarios correspondiente que indican las notaciones
$left
y$right
. Ejemplos:
| join … on $left.Col1 == $right.Col2
| join … on X (equivalent to: | join … on $left.X == $right.X)