チュートリアル: 一般的な演算子について学習する

Kusto 照会言語 (KQL) は、Azure Data ExplorerAzure Monitor Log AnalyticsAzure Sentinel などのクエリを記述するために使用されます。 このチュートリアルでは、データへのアクセスと分析に使用される重要な KQL 演算子の概要について説明します。

Azure Monitor でログのクエリを実行する方法の詳細については、「 ログ クエリの概要」を参照してください。

注意

お探しの情報がない場合、 この記事は、次のように最近分割されました。

このチュートリアルで学習する内容は次のとおりです。

このチュートリアルの例では、ヘルプ クラスターで公開されているテーブルを使用StormEventsします。 独自のデータを使用して探索するには、 独自の無料クラスターを作成します

前提条件

  • ヘルプ クラスターにサインインするための Microsoft アカウントまたはMicrosoft Entraユーザー ID

行数のカウント

まず 、count 演算子を使用して、テーブル内の Storm レコードの数を StormEvents 検索します。

StormEvents 
| count

出力

Count
59066

データのサンプルを見る

データを理解するには、 take 演算子を使用してレコードのサンプルを表示します。 この演算子は、テーブルから指定された数の任意の行を返します。これは、一般的なデータ構造と内容をプレビューする場合に役立ちます。

StormEvents 
| take 5

次の表は、返される 22 個の列のうち 6 つだけを示しています。 完全な出力を表示するには、クエリを実行します。

StartTime EndTime EpisodeId EventId 状態 EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI 雷雨風 ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA 雷雨風 ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTIC SOUTH Waterspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Heavy Rain ...

列のサブセットを選択する

プロジェクト演算子を使用してビューを簡略化し、列の特定のサブセットを選択します。 多くの場合、 を使用すると project 、すべての列を表示するよりも効率的で読みやすくなります。

StormEvents
| take 5
| project State, EventType, DamageProperty

出力

EventType DamageProperty
ATLANTIC SOUTH Waterspout 0
FLORIDA Heavy Rain 0
FLORIDA Tornado 6200000
GEORGIA 雷雨風 2000
MISSISSIPPI 雷雨風 20000

一意の値を一覧表示する

前のクエリの結果に基づいて、複数の種類の嵐があるようです。 一意の嵐の種類をすべて一覧表示するには、distinct 演算子を使用します。

StormEvents 
| distinct EventType

テーブルには 46 種類の嵐があります。 そのうちの 10 個のサンプルを次に示します。

EventType
雷雨風
ひょう
鉄砲水
干ばつ
冬の天気
Winter Storm
大雪
High Wind
フロスト/フリーズ
洪水
...

条件でフィルター処理

where 演算子は、特定の条件に基づいてデータの行をフィルター処理します。

次のクエリでは、特定EventTypeの で Storm イベントをState検索します。

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

これらの条件に一致するイベントは 146 個あります。 そのうちの 5 つのサンプルを次に示します。

StartTime EndTime 状態 EventType DamageProperty
2007-01-13T08:45:00Z 2007-01-13T10:30:00Z テキサス州 洪水 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z テキサス州 洪水 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z テキサス州 洪水 0
2007-01-15T22:00:00Z 2007-01-16T22:00:00Z テキサス州 洪水 20000
2007-03-12T02:30:00Z 2007-03-12T06:45:00Z テキサス州 洪水 0
... ... ... ... ...

結果の並べ替え

損害が最も多いテキサス州の洪水の上位を表示するには、 並べ替え 演算子を使用して、列に基づいて行を降順に DamageProperty 配置します。 既定の並べ替え順序は降順です。 昇順で並べ替えるには、 を指定します asc

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

出力

StartTime EndTime 状態 EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z テキサス州 洪水 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z テキサス州 洪水 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z テキサス州 洪水 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z テキサス州 洪水 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z テキサス州 洪水 750000
... ... ... ... ...

上位 n 行を取得する

top 演算子は、指定した列で並べ替えられた最初の n 行を返します。

次のクエリでは、最も損傷を受けたプロパティの原因となった 5 つのテキサス洪水が返されます。

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

出力

StartTime EndTime 状態 EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z テキサス州 洪水 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z テキサス州 洪水 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z テキサス州 洪水 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z テキサス州 洪水 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z テキサス州 洪水 750000

注意

演算子の順序は重要です。 ここで前にwhere入力topすると、異なる結果が得られます。 これは、データが各演算子によって順番に変換されるためです。 詳細については、「 表形式の式ステートメント」を参照してください。

計算列の作成

プロジェクト演算子と拡張演算子の両方で、計算列を作成できます。

を使用して project 表示する列のみを指定し、 を使用 extend して計算列をテーブルの末尾に追加します。

次のクエリでは、 と EndTimeの差を持つ計算列がStartTime作成されますDuration。 いくつかの選択列のみを表示する必要があるため、この場合は を使用 project することをお勧めします。

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty

出力

StartTime EndTime Duration DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z 1.01:30:00 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z 12:00:00 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z 05:00:00 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z 08:00:00 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z 03:00:00 750000

計算 Duration 列を見ると、最も大きな被害を引き起こした洪水も最も長い洪水であることに気付くかもしれません。

計算列Durationと他のすべての列を表示するには、 を使用extendします。 Duration列が最後の列として追加されます。

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime

出力

StartTime EndTime ... Duration
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z ... 1.01:30:00
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z ... 12:00:00
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z ... 05:00:00
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z ... 08:00:00
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z ... 03:00:00

あるセットから別のセットに値をマップする

静的マッピングは、結果の表示を変更するための便利な手法です。 KQL では、静的マッピングを実行する方法の 1 つは、動的ディクショナリとアクセサーを使用して、あるセットから別のセットに値をマップすることです。

let sourceMapping = dynamic(
  {
    "Emergency Manager" : "Public",
    "Utility Company" : "Private"
  });
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]

出力

EventId source FriendlyName
68796 非常事態担当マネージャー パブリック
... ... ...
72609 ユーティリティカンパニー プライベート
... ... ...

次のステップ

Kusto クエリの作成の基本事項を理解したら、次のチュートリアルに進み、集計関数を使用してデータに関するより深い洞察を得る方法について説明します。