Kusto 照会言語 (KQL) の概要
Kusto 照会言語 (KQL) は、データの探索とパターンの検出、異常値と外れ値の特定、統計モデリングの作成などを行うための強力なツールです。 このクエリでは、データベース、テーブル、列など、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 というテーブルへの参照で始まり、where
と count
という複数の演算子がパイプで区切られています。 ソース テーブルのデータ行は、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 の使用に関する具体的な情報については、次のリンクを参照してください。
- Azure Monitor でのログ クエリ
- Microsoft Sentinel の Kusto 照会言語
- Azure Resource Graph クエリ言語の概要
- Microsoft 365 Defender の高度なハンティングで脅威を事前に追求する
- CMPivot クエリ
次のステップ
フィードバック
フィードバックの送信と表示