Recomendações de linguagem de consulta de Log Analytics para operadores de Resumo e Junção
Data da 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 operadores de Resumo e Junção. A sintaxe existente ainda é compatível, mas é altamente recomendável que você modifique a sintaxe de consulta, quando aplicável, em pesquisas e alertas salvos, para evitar ambiguidade de resultados.
Se tiver dúvidas sobre estas recomendações, entre em contato conosco.
Compartimentalização automática por hora no operador de Resumo
No momento, os dados agregados pela chave datetime são automaticamente agrupados em compartimentos por hora. Neste exemplo, a coluna TimeGenerated usada no operador de Resumo foi automaticamente arredondada para compartimentos por hora:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Os resultados da consulta são:
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 estiver usando o recurso de compartimentalização automática, seja em pesquisas salvas ou em alertas (por exemplo, resumir por TimeGenerated):
- nenhuma ação será necessária.
- Se você não tiver conhecimento do recurso de compartimentalização automática, suas consultas poderão gerar resultados com agregação por hora não intencional:
- verifique se está usando dados de agregação pela chave datetime (por exemplo, resumir por TimeGenerated). Se sim, corrija as consultas de forma a usar a compartimentalização explícita, por exemplo, resumir por bin(TimeGenerated, 1h).
- Se você tiver conhecimento do recurso de compartimentalização automática e o estiver usando:
- corrija as consultas de forma a usar a compartimentalização explícita, por exemplo, resumir por bin(TimeGenerated, 1h).
Expressões de igualdade no operador de Junção
No momento, a sintaxe de linguagem permite o uso de expressões de igualdade ambíguas como atributos de Junção (por exemplo, key1 == key2), gerando resultados indesejados. Recomendamos que você altere as expressões de igualdade ambíguas para evitar tal comportamento.
Abaixo, há um exemplo de uma expressão de Junção ambígua (somando a duração diária de sessão 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 você não usa expressões de igualdade em operadores de Junção, seja em pesquisas salvas ou em alertas:
- nenhuma ação será necessária.
- Se você usa expressões de igualdade em operadores de Junção:
- corrija a sintaxe do operador de Junção.
- corrija suas consultas. Os nomes de colunas devem ser qualificados com a tabela de proprietários aplicável indicada pelas notações
$left
e$right
. Exemplos:
| join … on $left.Col1 == $right.Col2
| join … on X (equivalent to: | join … on $left.X == $right.X)