Kusto 照会言語 (KQL) の概要

Kusto 照会言語は、データの探索とパターンの検出、異常値と外れ値の特定、統計モデリングの作成などを行うための強力なツールです。 このクエリでは、SQL に似た階層に編成されたスキーマ エンティティ (データベース、テーブル、列) が使用されます。

Kusto クエリとは

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

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

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

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

Note

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

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

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

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

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

Note

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

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

Count
28

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

管理コマンド

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

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

管理コマンドには独自の構文があり、これは Kusto クエリ言語構文に含まれていませんが、この 2 つは多くの概念を共有しています。 特に、コマンドのテキストの最初の文字をドット (.) 文字 (クエリの先頭にすることができない) にすることで、管理コマンドはクエリと区別されます。 この区別により、クエリ内での管理コマンドの埋め込みが防止されるため、さまざまな種類のセキュリティ攻撃を防ぐことができます。

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

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

次の手順