Recomendaciones del lenguaje de consulta de Log Analytics para los operadores Summarize y Join

Publicado el martes, 29 de mayo de 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)

 

  • Log Analytics
  • Azure Monitor
  • Services