次の方法で共有


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

[ バージョン ] ドロップダウン リストを使用してサービスを切り替えます。 ナビゲーションの詳細を確認します
適用対象: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

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

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

注意

お探しのものが見つかりませんか? この記事は、次のように最近分割されました。

このチュートリアルでは、以下の内容を学習します。

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

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

前提条件

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

行数を数える

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

StormEvents 
| count

出力

カウント
59066

データのサンプルを見る

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

StormEvents 
| take 5

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

開始時間 終了時刻 EpisodeId EventId 都道府県 イベントタイプ ...
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 アトランティック サウス Waterspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA 大雨 ...

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

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

StormEvents
| take 5
| project State, EventType, DamageProperty

出力

都道府県 イベントタイプ ダメージプロパティ
アトランティック サウス 水上竜巻 0
FLORIDA 大雨 0
FLORIDA Tornado 6200000
ジョージア 雷雨風 2000
MISSISSIPPI 雷雨風 20000

一意の値を一覧表示する

前のクエリの結果には、複数の種類の Storm が表示されます。 distinct 演算子を使用して、すべての一意の Storm の種類を一覧表示します。

StormEvents 
| distinct EventType

テーブルには、46 種類の嵐が含まれています。 10 個のサンプルを次に示します。

イベントタイプ
雷雨風
ひょう
鉄砲水
干ばつ
冬の天気
冬の嵐
大雪
高風
霜/凍結
洪水
...

結果の並べ替え

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

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, 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
... ... ... ... ...

条件でフィルターする

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

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

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

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

開始時間 終了時刻 都道府県 イベントタイプ ダメージプロパティ
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
... ... ... ... ...

日付と時刻の範囲でフィルター処理する

演算子 間の を使用して、特定の時間範囲に基づいてデータをフィルター処理します。

次のクエリでは、2007 年 8 月 1 日から 2007 年 8 月 30 日までの間のすべての Storm イベントとその状態、イベントの種類、開始時刻、終了時刻が検索されます。 クエリは、開始時刻ごとに昇順で結果を並べ替えます。

StormEvents
| where StartTime between (datetime(2007-08-01 00:00:00) .. datetime(2007-08-30 23:59:59))
| project State, EventType, StartTime, EndTime
| sort by StartTime asc 

出力

都道府県 Eventype 開始時間 終了時刻
ジョージア 過剰な熱 2007-08-01 00:00:00 2007-08-27 23:59:00
テネシー州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
テネシー州 干ばつ 2007-08-01 00:00:00 2007-08-3123:59:00
サウスカロライナ州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
テネシー州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
ジョージア 過剰な熱 2007-08-01 00:00:00 2007-08-27 23:59:00
テネシー州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
ミネソタ州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
ウィスコンシン州 干ばつ 2007-08-01 00:00:00 2007-08-31 23:59:00
ジョージア 過剰な熱 2007-08-01 00:00:00 2007-08-27 23:59:00
... ... ... ...

上位の n 行を取得する

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

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

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, 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

注意

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

計算列の作成

プロジェクト拡張演算子を使用して、計算列を作成できます。

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

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

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, 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

出力

開始時間 終了時刻 ... 期間
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 では、動的ディクショナリとアクセサーを使用して静的マッピングを実行し、あるセットから別のセットに値をマップできます。

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 ソース フレンドリーネーム
68796 非常事態担当マネージャー パブリック
... ... ...
72609 公益事業会社 非公開
... ... ...

次のステップ

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