Omówienie języka Kusto Query Language (KQL)

Język Kusto Query Language (KQL) to zaawansowane narzędzie do eksplorowania danych i odnajdywania wzorców, identyfikowania anomalii i wartości odstających, tworzenia modelowania statystycznego i nie tylko. KQL to prosty, ale zaawansowany język do wykonywania zapytań dotyczących danych ze strukturą, częściowo ustrukturyzowaną i nieustrukturyzowaną. Język jest ekspresyjny, łatwy do odczytania i zrozumienia intencji zapytań oraz zoptymalizowany pod kątem środowisk tworzenia. język zapytań Kusto jest optymalny w przypadku wykonywania zapytań dotyczących danych telemetrycznych, metryk i dzienników z głęboką obsługą wyszukiwania tekstu i analizowania, operatorów szeregów czasowych i funkcji, analizy i agregacji, geoprzestrzennych, wyszukiwania podobieństw wektorów i wielu innych konstrukcji językowych, które zapewniają najbardziej optymalny język do analizy danych. Zapytanie używa jednostek schematu, które są zorganizowane w hierarchii podobnej do SQLs: bazy danych, tabele i kolumny.

Ten artykuł zawiera wyjaśnienie języka zapytań i oferuje praktyczne ćwiczenia umożliwiające rozpoczęcie pisania zapytań. Aby uzyskać dostęp do środowiska zapytań, użyj internetowego interfejsu użytkownika usługi Azure Data Explorer. Aby dowiedzieć się, jak używać języka KQL, zobacz Samouczek: poznaj typowe operatory.

Co to jest zapytanie Kusto?

Zapytanie języka Kusto jest żądaniem tylko do odczytu, które przetwarza dane i zwraca wyniki. Żądanie jest określone w postaci zwykłego tekstu przy użyciu modelu przepływu danych, który jest łatwy do odczytania, tworzenia i automatyzowania. Zapytania Kusto składają się z co najmniej jednej instrukcji zapytania.

Co to jest instrukcja zapytania?

Istnieją trzy rodzaje instrukcji zapytań użytkownika:

Wszystkie instrukcje zapytania są oddzielone średnikami ; i mają wpływ tylko na zapytanie.

Uwaga

Aby uzyskać informacje na temat instrukcji zapytań aplikacji, zobacz Instrukcje zapytań aplikacji.

Najczęstszym rodzajem instrukcji zapytania jest instrukcja wyrażenia tabelarycznego, co oznacza, że zarówno dane wejściowe, jak i wyjściowe składają się z tabel lub zestawów danych tabelarycznych. Instrukcje tabelaryczne zawierają zero lub więcej operatorów, z których każda zaczyna się od danych wejściowych tabelarycznych i zwraca dane wyjściowe tabelaryczne. Operatory są sekwencjonowane przez | (potok). Dane przepływają lub są przesyłane potokami z jednego operatora do następnego. Dane są filtrowane lub poddawane odpowiednim modyfikacjom w każdym kroku, a następnie przekazywane do kolejnego kroku.

Jest to jak lejek, w którym zaczynamy od całej tabeli danych. Za każdym razem, gdy dane przechodzą przez kolejny operator, są filtrowane, porządkowane lub podsumowywane. Ponieważ potokowanie informacji z jednego operatora do drugiego jest sekwencyjne, kolejność operatorów zapytań jest ważna i może mieć wpływ zarówno na wyniki, jak i wydajność. Na końcu lejka otrzymujemy oczyszczone dane wyjściowe.

Przyjrzyjmy się przykładowej kwerendzie.

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 
Liczba
28

Uwaga

KQL jest rozróżniana wielkość liter dla wszystkich elementów — nazwy tabel, nazwy kolumn tabeli, operatory, funkcje itd.

To zapytanie ma pojedynczą instrukcję wyrażenia tabelarycznego. Instrukcja rozpoczyna się od odwołania do tabeli o nazwie StormEvents i zawiera kilka operatorów oraz wherecount, każdy oddzielony potokiem. Wiersze danych dla tabeli źródłowej są filtrowane według wartości kolumny StartTime , a następnie filtrowane według wartości kolumny State . W ostatnim wierszu zapytanie zwraca tabelę z jedną kolumną i pojedynczym wierszem zawierającym liczbę pozostałych wierszy.

Aby wypróbować kilka innych zapytań Kusto, zobacz Samouczek: pisanie zapytań Kusto.

Polecenia zarządzania

W przeciwieństwie do zapytań Kusto polecenia zarządzania są żądaniami usługi Kusto do przetwarzania lub modyfikowania danych lub metadanych. Na przykład następujące polecenie zarządzania tworzy nową tabelę Kusto z dwiema kolumnami Level i Text:

.create table Logs (Level:string, Text:string)

Polecenia zarządzania mają własną składnię, która nie jest częścią składni język zapytań Kusto, chociaż te dwa współdzielą wiele pojęć. W szczególności polecenia zarządzania różnią się od zapytań, ponieważ pierwszy znak w tekście polecenia to znak kropki (.), który nie może uruchomić zapytania. To rozróżnienie zapobiega wielu rodzajom ataków zabezpieczających, ponieważ uniemożliwia osadzanie poleceń zarządzania wewnątrz zapytań.

Nie wszystkie polecenia zarządzania modyfikują dane lub metadane. Duża klasa poleceń, które zaczynają się od ciągu .show, służy do wyświetlania metadanych lub danych. Na przykład polecenie .show tables zwraca listę wszystkich tabel w bieżącej bazie danych.

Aby uzyskać więcej informacji na temat poleceń zarządzania, zobacz Omówienie poleceń zarządzania.

KQL w innych usługach

Język KQL jest używany przez wiele innych usług firmy Microsoft. Aby uzyskać szczegółowe informacje na temat korzystania z języka KQL w tych środowiskach, zapoznaj się z następującymi linkami: