Jupyter Notebook と Kqlmagic 拡張機能を使用して Azure Data Explorer 内のデータを分析する
Jupyter Notebook はオープン ソースの Web アプリケーションであり、ライブ コード、数式、視覚化、説明テキストを含むドキュメントを作成して共有するために使用できます。 用途には、データのクリーニングと変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などが含まれています。
Jupyter Notebook では、追加コマンドをサポートすることによってカーネルの機能を拡張するマジック関数がサポートされています。 kqlmagic は、Kusto 言語のクエリをネイティブに実行できるように、Jupyter Notebook での Python カーネルの機能を拡張するコマンドです。 Python とKusto 照会言語を簡単に組み合わせて、コマンドと統合されたrender
豊富な Plot.ly ライブラリを使用して、データのクエリと視覚化を行うことができます。 クエリを実行するためのデータ ソースがサポートされています。 このようなデータ ソースとしては、ログとテレメトリ データのための高速でスケーラブルなデータ探索サービスである Azure Data Explorer や、Azure Monitor ログ、Application Insights などがあります。 Kqlmagic は、Azure Data Studio、Jupyter Lab、および Visual Studio Code Jupyter 拡張機能でも動作します。
前提条件
- Microsoft アカウントまたは Azure Active Directory のユーザー ID。 Azure サブスクリプションは不要です。
- ローカル コンピューターにインストールされている Jupyter Notebook。または、Azure Data Studio を使用。
Kqlmagic ライブラリをインストールする
Kqlmagic をインストールします。
!pip install Kqlmagic --no-cache-dir --upgrade
Kqlmagic を読み込みます。
%reload_ext Kqlmagic
注意
[カーネル] > [カーネルの変更] > [Python 3.6] の順にクリックして、カーネルのバージョンを Python 3.6 に変更します
Azure Data Explorer のヘルプ クラスターに接続する
次のコマンドを使用して、Help クラスターでホストされている Samples データベースに接続します。 Microsoft 以外の Azure AD ユーザーの場合は、テナント名 Microsoft.com
をお使いの Azure AD テナントに置き換えてください。
%kql AzureDataExplorer://tenant="Microsoft.com";code;cluster='help';database='Samples'
注意
独自の Azure Data Explorer クラスターを使用している場合は、次のように接続文字列にリージョンを含める必要があります。%kql azuredataexplorer://tenant="yourcompany.com";code;cluster='mycluster.westus';database='mykustodb'
クエリと視覚化を実行する
render 演算子を使用してデータのクエリを実行し、ploy.ly ライブラリを使用してデータを視覚化します。 このクエリと視覚化では、ネイティブの KQL を使用する統合されたエクスペリエンスが提供されます。 Kqlmagic では、timepivot
、pivotchart
、ladderchart
を除くほとんどのグラフがサポートされています。 レンダリングは、kind
、ysplit
、accumulate
を除くすべての属性でサポートされています。
クエリを実行して円グラフをレンダリングする
%%kql
StormEvents
| summarize statecount=count() by State
| sort by statecount
| take10
| render piechart title="My Pie Chart by State"
クエリを実行して時間グラフをレンダリングする
%%kql
StormEvents
| summarize count() by bin(StartTime,7d)
| render timechart
注意
これらのグラフは対話形式です。 特定の時間を拡大するには、時間範囲を選択します。
グラフの色をカスタマイズする
既定のカラー パレットが好みでない場合は、パレット オプションを使用してグラフをカスタマイズします。 使用できるパレットは次の場所にあります。Kqlmagic クエリ グラフ結果のカラー パレットを選択する
パレットの一覧の場合:
%kql --palettes -popup_window
cool
カラー パレットを選択し、もう一度クエリをレンダリングします。%%kql -palette_name "cool" StormEvents | summarize statecount=count() by State | sort by statecount | take10 | render piechart title="My Pie Chart by State"
Python でクエリをパラメーター化する
Kqlmagic を使用すると、Kusto 照会言語と Python を簡単に交換できます。 詳細については、以下を参照してください。Python で Kqlmagic のクエリをパラメーター化する
KQL のクエリで Python 変数を使用する
Python 変数の値をクエリで使用して、データをフィルター処理できます。
statefilter = ["TEXAS", "KANSAS"]
%%kql
let _state = statefilter;
StormEvents
| where State in (_state)
| summarize statecount=count() by bin(StartTime,1d), State
| render timechart title = "Trend"
クエリの結果を Pandas データフレームに変換する
Pandas データフレームで KQL クエリの結果にアクセスできます。 次のように、変数 _kql_raw_result_
で最後に実行されたクエリ結果にでアクセスし、Pandas データフレームに結果を簡単に変換できます。
df = _kql_raw_result_.to_dataframe()
df.head(10)
例
多くの分析シナリオでは、多数のクエリを含む再利用可能なノートブックを作成し、あるクエリから後続のクエリに結果をフィードすることが必要な場合があります。 次の例では、Python 変数 statefilter
を使用してデータをフィルター処理しています。
クエリを実行し、
DamageProperty
が最大の上位 10 個の状態を表示します。%%kql StormEvents | summarize max(DamageProperty) by State | order by max_DamageProperty desc | take10
クエリを実行して、上位の状態を抽出し、Python 変数に設定します。
df = _kql_raw_result_.to_dataframe() statefilter =df.loc[0].State statefilter
let
ステートメントと Python 変数を使用してクエリを実行します。%%kql let _state = statefilter; StormEvents | where State in (_state) | summarize statecount=count() by bin(StartTime,1d), State | render timechart title = "Trend"
help コマンドを実行します。
%kql --help "help"
ヒント
使用可能なすべての構成についての情報を受け取るには、%config Kqlmagic
を使用します。 接続の問題や不適切なクエリなどの Kusto エラーのトラブルシューティングとキャプチャを行うには、%config Kqlmagic.short_errors=False
を使用します
次のステップ
help コマンドを実行して、サポートされるすべての機能が含まれている次のサンプル ノートブックを調べます。