Azure Data Explorer の Python ライブラリを使用してデータのクエリを実行する
この記事では、Azure Data Explorer を使用してデータのクエリを実行します。 Azure Data Explorer は、ログと利用統計情報データのための高速で拡張性に優れたデータ探索サービスです。
Azure データ エクスプ ローラーでは、Python 用のデータ クライアント ライブラリが提供されています。 このライブラリを使用すると、コードからデータをクエリできます。 学習を支援するために設定した "ヘルプ クラスター" 上のテーブルに接続します。 そのクラスターでテーブルのクエリを実行し、結果を返すことができます。
前提条件
データ ライブラリをインストールする
azure-kusto-data をインストールします。
pip install azure-kusto-data
import ステートメントおよび定数を追加する
ライブラリのほか、データ分析ライブラリである pandas からクラスをインポートします。
from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
from azure.kusto.data.exceptions import KustoServiceError
from azure.kusto.data.helpers import dataframe_from_result_table
import pandas as pd
アプリケーションを認証するために、Azure Data Explorer は Microsoft Entra テナント ID を使用します。 テナント ID を検索するには、次の URL を使用し、ドメインを YourDomain に置き換えます。
https://login.microsoftonline.com/<YourDomain>/.well-known/openid-configuration/
たとえば、ドメインが contoso.com の場合、URL は https://login.microsoftonline.com/contoso.com/.well-known/openid-configuration/ になります。 結果を表示するには、この URL をクリックします。最初の行は次のとおりです。
"authorization_endpoint":"https://login.microsoftonline.com/6babcaad-604b-40ac-a9d7-9fd97c0b779f/oauth2/authorize"
この場合のテナント ID は 6babcaad-604b-40ac-a9d7-9fd97c0b779f
です。 このコードを実行する前に、AAD_TENANT_ID の値を設定します。
AAD_TENANT_ID = "<TenantId>"
KUSTO_CLUSTER = "https://help.kusto.windows.net/"
KUSTO_DATABASE = "Samples"
では、接続文字列を作成します。 この例では、デバイス認証を使用してクラスターにアクセスします。 Microsoft Entra アプリケーション証明書Microsoft Entra アプリケーション キーMicrosoft Entra ユーザーとパスワードを使用することもできます。
KCSB = KustoConnectionStringBuilder.with_aad_device_authentication(
KUSTO_CLUSTER)
KCSB.authority_id = AAD_TENANT_ID
Azure データ エクスプローラーに接続し、クエリを実行する
クラスターに対してクエリを実行し、データ フレームに出力を格納します。 このコードを実行すると、次のようなメッセージが返されます: サインインするには、Web ブラウザーを使用してページ https://microsoft.com/devicelogin を開き、コード F3W4VWZDM を入力して認証します。 この手順に従ってサインインし、元のページに戻って次のコード ブロックを実行します。
KUSTO_CLIENT = KustoClient(KCSB)
KUSTO_QUERY = "StormEvents | sort by StartTime desc | take 10"
RESPONSE = KUSTO_CLIENT.execute(KUSTO_DATABASE, KUSTO_QUERY)
データフレームでデータを確認する
サインインを入力すると、クエリによって結果が返され、データ フレームに格納されます。 他のすべてのデータ フレームと同様に、結果を操作できます。
df = dataframe_from_result_table(RESPONSE.primary_results[0])
df
StormEvents テーブルの上位 10 件の結果が表示されます。