Typy zapytań KQL

Ukończone

W poprzedniej lekcji przedstawiono strukturę zapytania KQL. Teraz przyjrzyjmy się bliżej różnym częściom i typom zapytań KQL.

Ta lekcja zawiera omówienie instrukcji i funkcji zapytań. W języku KQL wszystkie zapytania składają się z co najmniej jednej instrukcji zapytania. Te instrukcje mają wpływ tylko na konkretne zapytanie, w którym są używane, chyba że jawnie są przechowywane do użytku w przyszłości. Najbardziej typowe typy instrukcji zapytania to instrukcje wyrażeń tabelarycznych i instrukcje let. Oprócz obszernej biblioteki wbudowanych funkcji język KQL umożliwia korzystanie z funkcji zdefiniowanych przez użytkownika, które mogą być przechowywane lub zdefiniowane do użycia w jednym zapytaniu.

Instrukcje wyrażeń tabelarycznych

Większość zapytań używa co najmniej jednej instrukcji wyrażenia tabelarycznego, co oznacza, że zarówno dane wejściowe, jak i wyjściowe składają się z tabel lub tabelarycznych zestawów danych. Te instrukcje zwykle zawierają operatory, z których każda zaczyna się od danych wejściowych tabelarycznych i zwraca dane wyjściowe tabelaryczne.

Istnieje szeroki zakres operatorów oferowanych przez KQL, od prostych operatorów (takich jak , i ) do bardziej złożonych (takich jak countparse, join, i render).wheresort

Na przykład następujące zapytanie zawiera cztery instrukcje wyrażenia tabelarycznego:

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

Instrukcje Let

Instrukcja let definiuje powiązanie między nazwą a wyrażeniem. Instrukcje let umożliwiają podzielenie długiego zapytania na małe nazwane części, które są łatwiejsze do zrozumienia.

Na przykład użyliśmy instrukcji let w poniższym zapytaniu do zdefiniowania wartości skalarnych:

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

Funkcje wbudowane

Wbudowane funkcje to funkcje zakodowane w kodzie zdefiniowanym przez język KQL, których nie można modyfikować. Język KQL ma bogatą bibliotekę funkcji dostępnych do użycia, którą można znaleźć w oficjalnej dokumentacji języka KQL. Funkcje obejmują proste sortowanie i dopasowywanie do złożonych funkcji statystycznych i geoprzestrzennych.

Na przykład następująca strcat() funkcja łączy argumenty ciągu:

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

Funkcje zdefiniowane przez użytkownika

Funkcje zdefiniowane przez użytkownika są, jak sugeruje ich nazwa, zdefiniowane przez użytkownika. Funkcje zdefiniowane przez użytkownika można podzielić na dwa typy:

  • Funkcje składowane: funkcje zdefiniowane przez użytkownika, które są przechowywane i zarządzane jednostki schematu bazy danych, podobne do tabel. Różne produkty używają różnych sposobów przechowywania funkcji.

    Na przykład następujące zapytanie w usłudze Azure Data Explorer przechowuje funkcję, która przyjmuje parametr:

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

    W innych środowiskach, takich jak Azure Monitor i Microsoft Sentinel, można zapisywać zapytania za pośrednictwem interfejsu użytkownika.

  • Funkcje zdefiniowane przez zapytanie: funkcje zdefiniowane przez użytkownika, które są definiowane i używane w zakresie pojedynczego zapytania. Do definiowania takich funkcji służy instrukcja let.

    Na przykład następujące zapytanie definiuje, a następnie używa funkcji f:

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