手軽にKQL投げたいなと思ったので。(手軽かどうかは微妙だが)
kqlmagic使うのが一番お手軽です。
- Jupyter Notebook と Kqlmagic 拡張機能を使用して、Azure Data Explorer 内のデータを分析します
- Kqlmagic: Microsoft Azure Monitor magic extension to Jupyter notebook
基本的には上記ドキュメントに従ってインストールなりしておけば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ファイルにしとけばソース管理ができるなと思った次第。わからんけど。
ピンバック: Azure Update (2020.04.30) | ブチザッキ