Recomendações de linguagem de consulta do Log Analytics para os operadores Summarize e Join

Publicado em 29 de maio de 2018

Esta atualização descreve as recomendações de sintaxe da linguagem de consulta do Azure Log Analytics e do Application Insights para os operadores Summarize e Join. A sintaxe existente continua a ser suportada, mas recomendamos vivamente que modifique a sintaxe de consulta sempre que aplicável nas pesquisas guardadas e nos alertas, para evitar resultados ambíguos.

Se tiver questões sobre estas recomendações, contacte-nos.

Discretização automática de hora a hora no operador Summarize

Atualmente, os dados agregados por chave datetime são automaticamente agrupados em discretizações de hora a hora. Neste exemplo, a coluna TimeGenerated utilizada no operador Summarize foi automaticamente arredondada para discretizações de hora a hora:

SecurityEvent

| where TimeGenerated > ago(1d)

| where EventID == 4625

| summarize count() by TimeGenerated

Eis os resultados da 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

 

Ações recomendadas:

  • Se não confiar na funcionalidade de discretização automática, nas pesquisas guardadas ou nos alertas (por exemplo, resumir por TimeGenerated):
    • Não é necessário realizar qualquer ação.
  • Se não tiver conhecimento da funcionalidade de discretização automática, as suas consultas poderão devolver resultados com agregação de hora a hora indesejada:
    • Verifique se está a utilizar a agregação de dados por chave datetime (por exemplo, resumir por TimeGenerated). Se estiver, corrija as consultas para utilizar a discretização explícita, por exemplo, resumir por bin(TimeGenerated, 1h).
  • Se tiver conhecimento da funcionalidade de discretização automática e confiar na mesma:
    • Corrija as consultas para utilizar a discretização explícita, por exemplo, resumir por bin(TimeGenerated, 1h).

Expressões de igualdade no operador Join

Atualmente, a sintaxe de linguagem permite a utilização de expressões de igualdade ambíguas como atributos Join (por exemplo, key1 == key2) que produzem resultados indesejados. Para evitar este comportamento, recomendamos que altere as expressões de igualdade ambíguas.

Eis um exemplo de uma expressão Join (que resume a duração da sessão diária por computador):

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

 

Ações recomendadas:

  • Se não utiliza expressões de igualdade em operadores Join, em pesquisas guardadas ou em alertas:
    • Não é necessário realizar qualquer ação.
  • Se utiliza expressões de igualdade em operadores Join:
    • Corrija a sintaxe do operador Join.
    • Corrija as suas consultas. Os nomes das colunas devem ser qualificados com a tabela do proprietário aplicável, assinalada com as notações $left e $right. Exemplos:

| join … on $left.Col1 == $right.Col2

| join … on X (equivalent to: | join … on $left.X == $right.X)

 

  • Log Analytics
  • Monitor do Azure
  • Services