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

初めに

この記事はFIXER 2nd Advent Calendar 2020 (https://adventar.org/calendars/5752) 20日目の記事です。

こんにちは。最近、「むつごい/むつこい」という言葉が方言であることを知り、驚愕した入社1年目の山下です。方言って面白いですよね。(因みにむつごいとは、胸焼けがするような、味が濃い、脂っこいといった意味です。)

早速ですが、本題に入っていこうと思います。本テーマでは、KQLを使って簡単にデータ検索ができるということを前編、後編、応用編に分けて説明していこうと思います。

KQLとは

KQL(Kusto Query Language)とは、公式ドキュメントによると、

Kusto クエリは、データを処理して結果を返すための、読み取り専用の要求です。 要求は、構文を読みやすく、作りやすく、自動化しやすくするように設計されたデータフロー モデルを利用してプレーンテキストで述べられます。

https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/query/

とのことです。正直、この文章だけ見ても「???」となりますよね。なので、手っ取り早く手を動かしてどのようなものか見ていきましょう。
その前に、弊社の先輩である松枝さんのASCIIさんにも取り上げられている以下の「診断ログは怖くない!欲しいログを探すコツ」という記事を読んでいると更に理解が深まるかと思います。(因みに私もこの記事を見て勉強しました。)
ASCIIさん:https://ascii.jp/elem/000/004/031/4031739/
元記事  :https://tech-blog.cloud-config.jp/2020-08-12-tips-for-finding-the-diagnostic-log-you-want/

では、準備が整ったと思うので、先ほど引用で使ったページの下部に、

このクエリを実行するには、ここをクリックしてください。 この場合、結果は次のようになります。

とありますので、実際に開いてみましょう。以下のようなAzure Data Explorerのデモページが開かれるかと思います。

なんと!既にKustoクエリが書かれていますね。なので、とりあえずこのKustoクエリの説明をしていきたいと思います。

このKustoクエリを上から順に見ていくと、

  1. StormEventsという名前のテーブルの
  2. StartTimeというカラムの中の、年月日が2007/11/01〜2007/12/01の間且つ
  3. Stateというカラムの中で"FLORIDA"
  4. 数を数える

そして出力する(今回の場合23回)という流れです。どうでしょうか。とてもわかりやすく、シンプルに書かれていることがわかったと思います。ここまで見た感じ、Kustoクエリって簡単じゃん!と思って頂けましたでしょうか?少しでもそう思って頂けたのであれば幸いです。

この調子で説明を続けたいところですが、今回はここまでにしたいと思います。

終わりに

今回の記事で、「KQLって名前からして取っ付きづらそうだな」というイメージは何となく払拭できたのではないかと思います。後編では、先ほど利用したデモ画面を使って、「KQLでよく使われる、where,summarize,sort by,project,renderなどの演算子を使って自分の欲しいデータを自分の欲しい形で出力する」みたいなことを説明していきたいと思います。応用編では、前編と後編で学んだことを活かして、Azure Log Analyticsでの診断ログに関して書く予定です。よろしければそちらもご覧ください。

最後までお読み頂きありがとうございました。次回の更新をお待ちください!