Tipos de consultas KQL

Concluído

Você aprendeu sobre a estrutura de uma consulta KQL na unidade anterior. Agora, vamos nos aprofundar nas diferentes partes e tipos de consultas KQL.

Esta unidade fornece uma visão geral das instruções e funções de consulta. No KQL, todas as consultas consistem de uma ou mais instruções de consulta. Essas instruções afetam apenas a consulta específica na qual são usadas, a menos que sejam armazenadas explicitamente para uso futuro. Os tipos mais comuns de instruções de consulta são instruções de expressão tabular e instruções let. Além de sua extensa biblioteca de funções internas, o KQL permite o uso de funções definidas pelo usuário que podem ser armazenadas ou definidas para uso em uma determinada consulta.

Instrução TABULAR EXPRESSION

A maioria das consultas usa pelo menos uma instrução de expressão tabular, o que significa que a entrada e saída consistem em tabelas ou conjuntos de dados tabulares. Essas instruções geralmente contêm operadores, cada um dos quais começa com uma entrada tabular e retorna uma saída tabular.

Há uma ampla gama de operadores fornecidos pelo KQL, que vão desde operadores simples (como count, sort e where) até os mais complexos (como parse, join e render).

Por exemplo, a consulta a seguir contém quatro instruções de expressão tabular:

StormEvents // tabular expression statement 1
| where EventType == "Flood" // tabular expression statement 2
| sort by DamageProperty asc // tabular expression statement 3
| take 10 // tabular expression statement 4

Instruções LET

Uma instrução let define uma associação entre um nome e uma expressão. Você pode usar as instruções let para dividir uma consulta longa em pequenas partes nomeadas que são mais fáceis de entender.

Por exemplo, usamos as instruções let na consulta a seguir para definir valores escalares:

let n = 10;  // number
let place = "VIRGINIA";  // string
let cutoff = ago(12345d); // datetime 
StormEvents 
| where StartTime > cutoff and State == place 
| take n

Funções internas

As funções internas são funções embutidas definidas pelo KQL que não podem ser modificadas. O KQL tem uma biblioteca avançada de funções disponíveis para uso, que podem você pode encontrar na documentação oficial do KQL. As funções variam de classificação simples e correspondência a funções estatísticas e geoespaciais complexas.

Por exemplo, a seguinte função strcat() concatena argumentos de cadeia de caracteres:

print str = strcat("hello", " ", "world")

Funções definidas pelo usuário

As funções definidas pelo usuário são, como o nome sugere, definidas pelo usuário. Podemos dividir funções definidas pelo usuário em dois tipos:

  • Funções armazenadas: funções definidas pelo usuário que são entidades de esquema de banco de dados armazenadas e gerenciadas, semelhantes às tabelas. Diferentes produtos usam diferentes maneiras de armazenar funções.

    Por exemplo, a seguinte consulta no Azure Data Explorer armazena uma função que usa um parâmetro:

    .create function
    with (docstring = 'Demo function with parameter', folder='Demo')
     MyFunction2(myLimit: long)  {StormEvents | take myLimit}
    

    Em outros ambientes, como o Azure Monitor e o Microsoft Sentinel, você pode salvar consultas por meio da interface do usuário.

  • Funções definidas por consulta, funções definidas pelo usuário definidas e usadas dentro do escopo de apenas uma consulta. A definição dessas funções é feita por meio de uma instrução let.

    Por exemplo, a seguinte consulta define e usa a função f:

    let f=(a: string, b: string) {
        strcat(a, " (la la la) ", b)
    };
    print f("hello", "world")