Jupyter NotebookでKQLする

手軽にKQL投げたいなと思ったので。(手軽かどうかは微妙だが)
kqlmagic使うのが一番お手軽です。

基本的には上記ドキュメントに従ってインストールなりしておけばOKです。最初にpipでkqlmagicをインストールします。

!pip install Kqlmagic --no-cache-dir  --upgrade

あとはKQL magicを読み込みます。

%reload_ext Kqlmagic

次にKQLを投げる先に接続します。以降は%kqlで呼び出せます。ヘルプもあるし特に困らないかと。ここではApplication Insightsにつなぐことにします。AppIDとApp Keyはあらかじめポータルから取得しておきましょう。

%kql appinsights://appid='appi-d';appkey='app-key'

Keyなどは必要に応じて環境変数などから読み込むとかしましょう。他にも

%kql appinsights://code;appid='<app-id>'

のように記述すればデバイスコードを使った対話ログオンができます。対話ログオン時、Azure ADテナントが複数あるアカウントで認証する場合などはtenantオプションでテナントIDも付けてあげればいいと思います。

後は%kql でそのままクエリを書けばOK。簡単ですね。

%kql \
customMetrics \
| where name=='CosmosDbRequestCharge' \
| where timestamp > ago(10m) \
| project value, timestamp \
| limit 1000 \
| render scatterchart with(xcolumn=timestamp, ycolumns=value)

render句使う場合はnbformatとかが必要になったりするので事前にインストールしておきましょう。

Azureポータル上でApplication InsightsやLog Analytics内でクエリ書く時の違いはrenderでプロットする際、自動的に良しなにしてくれないので withを使ってオプション指定するところぐらいでしょうか。
ちなみにKQLの実行後であればアンダースコアな変数に実行結果があるのでそのままData Frameとかに変換して弄ることもできます。

import numpy
import pandas
df = _.to_dataframe()
df.plot.scatter(x='timestamp',y='value')

まぁお好みでどうぞ。あとついでに Azure Cosmos DB SQL API client library for Pythonとかも使えばCosmos DBのSQL APIにクエリ投げたりもできます。

まぁCosmos DBであれば組み込みJupyter Notebook使うとか、Azure Notebooks使うとかで全然OKだと思いますけど。Application Insightsもブラウザのほうが高機能な気もしますし、今なら普通にクエリの共有とかもできますからね。わざわざローカルで面倒なことしなくてもいい気もします。(jpynbファイルにしとけばソース管理ができるなと思った次第。わからんけど。

Jupyter NotebookでKQLする」への1件のフィードバック

  1. ピンバック: Azure Update (2020.04.30) | ブチザッキ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中