Recomendações de linguagem de consulta do Log Analytics para os operadores Summarize e Join
Data de publicação: 29 maio, 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)