次の方法で共有


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

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

Azure Monitor でログを照会する方法の詳細なガイダンスについては、「ログ クエリの概要」を参照してください

Note

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

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

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

前提条件

行数のカウント

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

StormEvents 
| count

出力

カウント
59066

データのサンプルを見る

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

StormEvents 
| take 5

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

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 ジョージア 雷雨風 ...
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
ジョージア 雷雨風 2000
MISSISSIPPI 雷雨風 20000

一意の値を一覧表示する

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

StormEvents 
| distinct EventType

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

EventType
雷雨風
ひょう
鉄砲水
干ばつ
冬の天気
Winter Storm
大雪
High Wind
Frost/Freeze
洪水
...

条件でフィルター処理する

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

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

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 行を取得する

先頭演算子は、指定した列で並べ替えられた最初の 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

Note

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

計算列の作成

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

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

次のクエリでは、〘と 〘の差を持つ計算列がStartTimeEndTime作成されます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 ソース FriendlyName
68796 非常事態担当マネージャー パブリック
... ... ...
72609 公益事業会社 プライベート
... ... ...

次のステップ

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