次の方法で共有


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

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

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

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

Note

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

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

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

このチュートリアルの例では、 StormEvents テーブルを使用します。このテーブルは、 Weather analytics サンプル データで一般公開されています。

前提条件

次のクエリを実行するには、サンプル データにアクセスできるクエリ環境が必要です。 次のいずれかを使用します。

行数のカウント

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

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 12,554 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 演算子を使用して、ビューを簡略化し、列の特定のサブセットを選択します。 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 があるようです。 distinct 演算子を使用して、すべての一意の Storm の種類を一覧表示します。

StormEvents 
| distinct EventType

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

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

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

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

次のクエリでは、特定のEventTypeの特定のStateで 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
... ... ... ... ...

結果の並べ替え

最も大きな被害を引き起こしたテキサス州の洪水の上位を表示するには、 ort 演算子を使用して、 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

Note

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

計算列の作成

project 演算子と extend 演算子の両方で計算列を作成できます。

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 列を見ると、最も大きな被害を引き起こした洪水も最も長い洪水であることに気付くかもしれません。

extendを使用して、計算されたDuration列とその他のすべての列を表示します。 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 クエリの記述に関する基本事項を理解しました。次のチュートリアルに進み、集計関数を使用してデータに関するより深い洞察を得る方法について説明します。