Tutorial: Aprender operadores comuns

Linguagem de Pesquisa Kusto (KQL) é utilizado para escrever 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 utilizados para aceder e analisar os seus dados.

Para obter orientações mais específicas sobre como consultar registos no Azure Monitor, veja Introdução às consultas de registo.

Nota

Não consegue encontrar o que procura? Este artigo foi recentemente dividido, da seguinte forma:

Neste tutorial, irá aprender a:

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

Pré-requisitos

  • Uma conta Microsoft ou Microsoft Entra identidade de utilizador para iniciar sessão no cluster de ajuda

Contar linhas

Comece por utilizar o operador de contagem para encontrar o número de registos storm na StormEvents tabela.

StormEvents 
| count

Saída

de palavras
59066

Ver um exemplo de dados

Para obter uma noção dos dados, utilize o operador take para ver uma amostra de registos. Este operador devolve um número especificado de linhas arbitrárias da tabela, o que pode ser útil para pré-visualizar o conteúdo e a estrutura de dados gerais.

StormEvents 
| take 5

A tabela seguinte mostra apenas 6 das 22 colunas devolvidas. 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 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Vento trovoada ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEÓRGIA Vento trovoada ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 SUL DO ATLÂNTICO Waterspout ...
2007-09-18T20:00:00Z 09-2007-19T18:00:00Z 11074 60904 FLORIDA Chuva Intensa ...

Selecionar um subconjunto de colunas

Utilize o operador de projeto para simplificar a vista e selecionar um subconjunto específico de colunas. A utilização project é, muitas vezes, mais eficiente e fácil de ler do que ver todas as colunas.

StormEvents
| take 5
| project State, EventType, DamageProperty

Saída

Estado EventType DamageProperty
SUL DO ATLÂNTICO Waterspout 0
FLORIDA Chuva Intensa 0
FLORIDA Tornado 6200000
GEÓRGIA Vento trovoada 2000
MISSISSIPPI Vento trovoada 20 000

Listar valores exclusivos

Parece que existem vários tipos de tempestades com base nos resultados da consulta anterior. Utilize o operador distinto para listar todos os tipos de storm exclusivos.

StormEvents 
| distinct EventType

Há 46 tipos de tempestades na mesa. Eis uma amostra de 10.

EventType
Vento trovoada
Granizo
Inundação Repentina
Seca
Tempo de Inverno
Tempestade de Inverno
Neve Pesada
Vento Forte
Geada/Fixar
Inundação
...

Filtrar por condição

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

A seguinte consulta procura eventos storm numa específica State de um específico EventType.

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

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

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

Ordenar os resultados

Para ver as principais inundações no Texas que causaram mais danos, utilize o operador de ordenação para organizar as linhas por ordem descendente com base na DamageProperty coluna. A sequência de ordenação predefinida é descendente. Para ordenar por ordem ascendente, 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
08-2007-18T21:30:00Z 08-2007-19T23:00:00Z TEXAS Inundação 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Inundação 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Inundação 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Inundação 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Inundação 750000
... ... ... ... ...

Obter as primeiras n linhas

O operador superior devolve as primeiras n linhas ordenadas pela coluna especificada.

A seguinte consulta devolve 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
08-2007-18T21:30:00Z 08-2007-19T23:00:00Z TEXAS Inundação 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Inundação 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Inundação 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Inundação 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Inundação 750000

Nota

A ordem dos operadores é importante. Se colocar top antes where aqui, obterá resultados diferentes. Isto deve-se ao facto de os dados terem sido transformados por cada operador por ordem. Para saber mais, veja instruções de expressão tabular.

Criar colunas calculadas

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

Utilize project para especificar apenas as colunas que pretende ver e utilize extend para acrescentar a coluna calculada ao final da tabela.

A consulta seguinte cria uma coluna calculada Duration com a diferença entre e StartTimeEndTime. Uma vez que só queremos ver algumas colunas selecionadas, utilizar project é a melhor opção neste 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
08-2007-18T21:30:00Z 08-2007-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 1000000
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 observar a coluna calculada Duration , poderá reparar que a inundação que causou mais danos foi também a inundação mais longa.

Utilize extend para ver a coluna calculada Duration juntamente 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
08-2007-18T21:30:00Z 08-2007-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 outro

O mapeamento estático é uma técnica útil para alterar a apresentação dos seus resultados. No KQL, uma forma de executar o mapeamento estático é ao utilizar um dicionário dinâmico e acessórios 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 Origem FriendlyName
68796 Gestor de Emergência Público
... ... ...
72609 Empresa de Serviços Públicos Privado
... ... ...

Passo seguinte

Agora que está familiarizado com o essencial da escrita de consultas kusto, avance para o próximo tutorial e saiba como utilizar funções de agregação para obter informações mais aprofundadas sobre os seus dados.