Tutorial: Aprender operadores comuns

Linguagem de Consulta Kusto (KQL) é usado para gravar consultas no Azure Data Explorer, no Log Analytics do Azure Monitor, no Azure Sentinel e muito mais. Este tutorial é uma introdução aos operadores KQL essenciais usados para acessar e analisar seus dados.

Para obter diretrizes mais específicas sobre como consultar logs no Azure Monitor, consulte Introdução às consultas de log.

Observação

Não encontrou o que você está procurando? Este artigo foi dividido recentemente, da seguinte maneira:

Neste tutorial, você aprenderá como:

Os exemplos neste tutorial usam a StormEvents tabela , que está disponível publicamente no cluster de ajuda. Para explorar com seus próprios dados, crie seu próprio cluster gratuito.

Pré-requisitos

  • Uma conta da Microsoft ou Microsoft Entra identidade do usuário para entrar no cluster de ajuda

Contar linhas

Comece usando o operador count para localizar o número de registros storm na StormEvents tabela.

StormEvents 
| count

Saída

Contagem
59066

Ver um exemplo de dados

Para ter uma noção dos dados, use o operador take para exibir um exemplo de registros. Esse operador retorna um número especificado de linhas arbitrárias da tabela, o que pode ser útil para visualizar a estrutura de dados geral e o conteúdo.

StormEvents 
| take 5

A tabela a seguir mostra apenas 6 das 22 colunas retornadas. Para ver a saída completa, execute a consulta.

StartTime EndTime EpisodeId EventId Estado EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLÓRIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPI Thunderstorm Wind ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEÓRGIA Thunderstorm Wind ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLÂNTICO SUL Tromba de água ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLÓRIDA Chuva Forte ...

Selecionar um subconjunto de colunas

Use o operador de projeto para simplificar a exibição e selecionar um subconjunto específico de colunas. Usar project geralmente é mais eficiente e fácil de ler do que exibir todas as colunas.

StormEvents
| take 5
| project State, EventType, DamageProperty

Saída

Estado EventType DamageProperty
ATLÂNTICO SUL Tromba de água 0
FLÓRIDA Chuva Forte 0
FLÓRIDA Tornado 6200000
GEÓRGIA Thunderstorm Wind 2000
MISSISSIPI Thunderstorm Wind 20000

Listar valores exclusivos

Parece que há vários tipos de tempestades com base nos resultados da consulta anterior. Use o operador distinct para listar todos os tipos de tempestade exclusivos.

StormEvents 
| distinct EventType

Há 46 tipos de tempestades na tabela. Aqui está uma amostra de 10 deles.

EventType
Thunderstorm Wind
Granizo
Saturação de Flash
Seca
Clima de Inverno
Tempestade de Inverno
Neve Pesada
Vento Forte
Geada/Congelar
Saturação
...

Filtrar por condição

O operador where filtra linhas de dados com base em determinados critérios.

A consulta a seguir procura eventos storm em um específico State de um específico EventType.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

Há 146 eventos que correspondem a essas condições. Aqui está uma amostra de 5 deles.

StartTime EndTime Estado EventType DamageProperty
2007-01-13T08:45:00Z 2007-01-13T10:30:00Z TEXAS Saturação 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Saturação 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Saturação 0
2007-01-15T22:00:00Z 2007-01-16T22:00:00Z TEXAS Saturação 20000
2007-03-12T02:30:00Z 2007-03-12T06:45:00Z TEXAS Saturação 0
... ... ... ... ...

Classificar resultados

Para exibir as principais inundações no Texas que causaram mais danos, use o operador de classificação para organizar as linhas em ordem decrescente com base na DamageProperty coluna. A ordem de classificação padrão é decrescente. Para classificar em ordem crescente, especifique asc.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Saída

StartTime EndTime Estado EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Saturação 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Saturação 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Saturação 1.000.000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Saturação 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Saturação 750000
... ... ... ... ...

Obter as n linhas superiores

O operador superior retorna as primeiras n linhas classificadas pela coluna especificada.

A consulta a seguir retorna as cinco inundações do Texas que causaram a propriedade mais danificada.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Saída

StartTime EndTime Estado EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Saturação 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Saturação 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Saturação 1.000.000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Saturação 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Saturação 750000

Observação

A ordem dos operadores é importante. Se você colocar top antes where aqui, obterá resultados diferentes. Isso ocorre porque os dados são transformados por cada operador na ordem. Para saber mais, confira instruções de expressão tabular.

Criar colunas calculadas

Os operadores de projeto e de extensão podem criar colunas calculadas.

Use project para especificar apenas as colunas que você deseja exibir e use extend para acrescentar a coluna calculada ao final da tabela.

A consulta a seguir cria uma coluna calculada Duration com a diferença entre e StartTimeEndTime. Como só queremos exibir algumas colunas selecionadas, usar project é a melhor opção nesse caso.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty

Saída

StartTime EndTime Duração DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z 1.01:30:00 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z 12:00:00 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z 05:00:00 1.000.000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z 08:00:00 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z 03:00:00 750000

Se você der uma olhada na coluna computada Duration , poderá notar que a inundação que causou mais danos também foi a inundação mais longa.

Use extend para exibir a coluna calculada Duration junto com todas as outras colunas. A Duration coluna é adicionada como a última coluna.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime

Saída

StartTime EndTime ... Duração
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z ... 1.01:30:00
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z ... 12:00:00
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z ... 05:00:00
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z ... 08:00:00
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z ... 03:00:00

Mapear valores de um conjunto para o outro

O mapeamento estático é uma técnica útil para alterar a apresentação dos resultados. No KQL, uma maneira de executar o mapeamento estático é usando um dicionário dinâmico e acessadores para mapear valores de um conjunto para outro.

let sourceMapping = dynamic(
  {
    "Emergency Manager" : "Public",
    "Utility Company" : "Private"
  });
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]

Saída

EventId Source FriendlyName
68796 Gerenciador de emergência Público
... ... ...
72609 Empresa de Serviços Públicos Privado
... ... ...

Próxima etapa

Agora que você está familiarizado com os conceitos básicos da escrita de consultas Kusto, vá para o próximo tutorial e saiba como usar funções de agregação para obter informações mais profundas sobre seus dados.