次の方法で共有


Kusto クエリ言語 (KQL) の概要

適用対象: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

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

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

Kusto クエリとは

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

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

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

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

手記

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

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

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

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

クエリ を実行する

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

手記

KQL では、テーブル名、テーブル列名、演算子、関数など、すべての要素で大文字と小文字が区別されます。
キーワードは、角かっこと引用符 ([''][""]) で囲むことで識別子として使用できます。 たとえば、['where']します。 詳細については、「識別子の名前付け規則 を参照してください。

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

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

管理コマンド

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

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

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

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

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

他のサービスの KQL

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