Typy zapytań KQL
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 count
parse
, join
, i render
).where
sort
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")