Kusto 照会言語 (KQL) の概要

Kusto 照会言語 (KQL) は、データの探索とパターンの検出、異常値と外れ値の特定、統計モデリングの作成などを行うための強力なツールです。 KQL は、構造化データ、半構造化データ、非構造化データに対してクエリを実行するためのシンプルで強力な言語です。 言語は表現力があり、読みやすく、クエリの意図を理解しやすく、作成エクスペリエンス用に最適化されています。 Kusto 照会言語は、テキスト検索と解析、時系列演算子と関数、分析と集計、地理空間、ベクトル類似性検索、およびデータ分析に最適な言語を提供するその他の多くの言語コンストラクトを深くサポートしてテレメトリ、メトリック、ログのクエリを実行する場合に最適です。 このクエリでは、SQL に似た階層に編成されたスキーマ エンティティ (データベース、テーブル、列) が使用されます。

この記事では、クエリ言語の説明と、クエリの記述を開始するための実用的な演習について説明します。 クエリ環境にアクセスするには、Azure Data Explorer Web UI を使用します。 KQL の使用方法については、「 チュートリアル: 一般的な演算子について」を参照してください。

Kusto クエリとは

Kusto クエリは、データを処理して結果を返すための、読み取り専用の要求です。 要求は、読みやすく、作りやすく、自動化しやすいデータフロー モデルを利用してプレーンテキストで提示されます。 Kusto クエリは 1 つ以上のクエリ ステートメントで構成されます。

クエリ ステートメントとは

ユーザー クエリ ステートメントには、次の 3 種類があります。

すべてのクエリ ステートメントは、; (セミコロン) で区切られ、実行中のクエリにのみ影響します。

Note

アプリケーション クエリ ステートメントの詳細については、「アプリケーションクエリステートメント」を参照してください。

最も一般的なクエリ ステートメントは表形式の式ステートメントです。つまり、入力と出力のいずれも、テーブルまたは表形式のデータセットで構成されています。 表形式のステートメントには 0 個以上の演算子が含まれており、それぞれによって表形式の入力が開始され、表形式の出力が返されます。 演算子は | (パイプ) でシーケンスされます。 データは、ある演算子から次の演算子へと流れます (つまりパイプされます)。 各手順でデータはフィルター処理または操作され、次の手順に送られます。

これは、データ テーブル全体から始まるじょうごのようなものです。 データが別の演算子を通過するたびに、フィルター処理、並べ替え処理、または集計処理が行われます。 ある演算子から別の演算子への情報のパイプ処理はシーケンシャルであるため、クエリ演算子の順序は重要であり、結果とパフォーマンスの両方に影響を与える可能性があります。 じょうごの最後には、洗練された出力が残ります。

クエリ例を見てみましょう。

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

Note

KQL では、テーブル名、テーブル列名、演算子、関数など、すべてのものに対して大文字と小文字が区別されます。

このクエリには、1 つの表形式の式ステートメントがあります。 このステートメントは、StormEvents というテーブルへの参照で始まり、wherecount という複数の演算子がパイプで区切られています。 ソース テーブルのデータ行は、StartTime 列の値でフィルター処理され、次に State 列の値でフィルター処理されています。 最後の行では、クエリから残りの行数を含む 1 列と 1 行を含むテーブルが返されます。

Kusto クエリをさらに試すには、「 チュートリアル: Kusto クエリを記述する」を参照してください。

管理コマンド

Kusto クエリとは対照的に、 管理コマンド は、データまたはメタデータを処理または変更するための Kusto への要求です。 たとえば、次の管理コマンドでは、 と の 2 つの列 Level を含む新しい Kusto テーブルが Text作成されます。

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

管理コマンドには独自の構文がありますが、これはKusto 照会言語構文の一部ではありませんが、2 つの概念は多数あります。 特に、管理コマンドは、コマンドのテキストの最初の文字がドット () 文字 (.クエリを開始できない) になることで、クエリと区別されます。 この区別により、クエリ内に管理コマンドを埋め込むのを防ぐという理由だけで、さまざまな種類のセキュリティ攻撃が防止されます。

すべての管理コマンドでデータやメタデータが変更されるわけではありません。 .show で始まる大きなクラスのコマンドは、メタデータまたはデータを表示するために使用されます。 たとえば、.show tables コマンドからは、現在のデータベース内のすべてのテーブルの一覧が返されます。

管理コマンドの詳細については、「管理コマンドの 概要」を参照してください。

他のサービスの KQL

KQL は、他の多くの Microsoft サービスで使用されています。 これらの環境での KQL の使用に関する具体的な情報については、次のリンクを参照してください。