超簡単!KQLの書き方(後編)
2020-12-21
azblob://2022/11/11/eyecatch/2020-12-17-so-easy-kusto-query-language-the-first-part.jpg

初めに

こんにちは。久しぶりの積雪にちょっとテンションが上がっていた入社1年目の山下です。翌朝、ベランダに雪が積もってて掃除が大変で、雪はもういいやとなりました。

早速ですが、本題に入っていこうと思います。本テーマは、KQLを使って簡単にデータ検索ができるということを前編、後編、応用編に分けた記事の後編になります。前編はこちらをご覧ください。

KQLでよく使われる演算子

ここでは、「KQLでよく使われる演算子を使い、実際のAzure Data Explorerのデモ画面で、自分の欲しいデータを自分の欲しい形で出力する」ということを行なっていきます。デモ画面のURLはこちらからお開きください。

①where

特定の述語でのフィルター

https://docs.microsoft.com/ja-jp/azure/data-explorer/kql-quick-reference

とドキュメントにありますが、実際に見ていった方が早いので見てみましょう。

ade_demo

こちらの画面は前編で説明しているので説明は省かせて頂きます。このKustoクエリを以下の画像のように編集してみてください。

ade_demo2

そして実行ボタンを押し、結果が出てくるのを待つと、以下のような画面が出てくるかと思います。

ade_demo_result

これは、StormEventsテーブルの全てのデータを表示しています。
では、ここからwhereを追加して、自分が欲しいデータを表示させてみましょう。欲しいデータは自分で決めて試してみて頂ければと思いますが、本記事では非常にシンプルではありますが、下記データを表示させてみようと思います。

  • StartTime2007-01-01 00:00:00 ~ 2008-01-01 00:00:00の期間
  • StateMINNESOTA
  • EventTypeFlood

では実際にwhereを使って表示させてみましょう。以下の画像のように入力してみてください。

ade_demo3

そしてこのKustoクエリを実行すると・・・

ade_demo_result2

レコード数が29件まで絞り込めましたね!これが「自分の欲しいデータを自分の欲しい形で出力する」の「自分の欲しいデータ」になります。

②project

先ほどの結果を見て思ったことはありませんか?私は不要な列まで混ざっていて見づらいと感じました。そこで、必要な列だけを表示させてみましょう。そのための演算子がprojectです。以下のようにprojectの行を追加します。

ade_demo4

そして実行を押すと・・・

ade_demo_result3

必要なStartTime,State,EventTypeの列だけ表示させることができました!だいぶ見やすくなったと思います。

③summarize

summarizeは入力テーブルの内容を集計したテーブルを生成します。こちらも以下のようにsummarizeの行を追加します。

ade_demo5

これで実行ボタンを押すと・・・

ade_demo_result4

2~4行目のwhere文で絞り込んだ数を出力することができました!やっぱりシンプルですよね。summarizeはこのように、データの数を出力することができるので、ユーザ登録数のようなものも簡単に取得することができます。(実際はそう上手くいかないかもしれません。あくまで一例ですのでご了承ください。)

④sort

sortは名前からピンとくるかもしれませんが、並べ替えです。以下のようにクエリを書き換えてみましょう。sortは並べ替えのため、わかりやすい数字で出力するために、EpisodeIdのデータを表示するようにしています。

ade_demo6

実行すると・・・

ade_demo_result5

EpisodeIdが順番に表示されました!ちゃんと順番に並んでいますね。因みに、ascは昇順という意味です。降順にしたい場合は、descに書き換えて実行してみてください。

⑤render

最後にrenderについて説明していきます。renderは簡単にいうとグラフを生成する演算子です。実際にクエリを見ていきます。

ade_demo7

これで実行すると・・・

ade_demo_result6

横軸がStartTime,縦軸がEpisodeIdのグラフが表示されました!たった1行でグラフが表示されることがわかりました。すごいですよね。今回、クエリでは5,6行目を追加しています。5行目で、StartTimeEpisodeの2列だけ出力し、6行目で、StartTime(横軸)とEpisode(縦軸)として、棒グラフで表示しています。

終わりに

今回、Azure Data Explorerのデモ画面で、よく使われる演算子を使ってKQLの説明をしていきました。見る前よりも理解を深めることができましたでしょうか?少しでも理解度が上がっていれば幸いです。前編と後編ではAzure Data Explorerで行なってきましたが、次の応用編では、Log AnalyticsでKQLを使って、実用的なログ収集をしていこうと思います。次回の更新をお待ち頂ければと思います。最後までお読み頂きありがとうございました!次回の更新もお楽しみに。