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 というテーブルへの参照で始まり、where
と count
という複数の演算子がパイプで区切られています。 ソース テーブルのデータ行は、StartTime 列の値でフィルター処理され、次に State 列の値でフィルター処理されています。 最後の行では、クエリから残りの行数を含む 1 列と 1 行を含むテーブルが返されます。
Count |
---|
28 |
Kusto クエリをさらに試すには、「 チュートリアル: Kusto クエリを記述する」を参照してください。
管理コマンド
Kusto クエリとは対照的に、管理コマンドは、データまたはメタデータを処理または変更することを求める Kusto への要求です。 たとえば、次の管理コマンドでは、2 つの列 Level
と Text
を持つ新しい Kusto テーブルが作成されます。
.create table Logs (Level:string, Text:string)
管理コマンドには独自の構文があり、これは Kusto クエリ言語構文に含まれていませんが、この 2 つは多くの概念を共有しています。 特に、コマンドのテキストの最初の文字をドット (.
) 文字 (クエリの先頭にすることができない) にすることで、管理コマンドはクエリと区別されます。
この区別により、クエリ内での管理コマンドの埋め込みが防止されるため、さまざまな種類のセキュリティ攻撃を防ぐことができます。
すべての管理コマンドでデータまたはメタデータが変更されるわけではありません。 .show
で始まる大きなクラスのコマンドは、メタデータまたはデータを表示するために使用されます。 たとえば、.show tables
コマンドからは、現在のデータベース内のすべてのテーブルの一覧が返されます。
管理コマンドの詳細については、「管理 (制御コマンド) の概要」を参照してください。