クイック スタート: 最初の DAX クエリを実行する

このクイック スタートでは、Power BIに対して認証を行い、セマンティック モデルに対して DAX クエリを実行し、Arrow 応答をローカル データ構造に逆シリアル化します。

[前提条件]

  • 少なくとも 1 つのセマンティック モデルを持つPower BI ワークスペース。
  • セマンティック モデルのビルドおよび読み取りのアクセス許可を持つ。
  • Microsoft Entraアプリの登録 (またはテストに対話型認証を使用します)。
  • Python 3.10 以降。

  • 依存関係をインストールします。

    pip install msal pyarrow pandas
    

1 - 認証

https://analysis.windows.net/powerbi/api/.default スコープを持つベアラー トークンを取得します。

from msal import PublicClientApplication

client_id = "YOUR_APP_CLIENT_ID"
authority = "https://login.microsoftonline.com/YOUR_TENANT_ID"
scopes = ["https://analysis.windows.net/powerbi/api/.default"]

app = PublicClientApplication(client_id, authority=authority)
result = app.acquire_token_interactive(scopes=scopes)

access_token = result["access_token"]

2 - DAX クエリを実行する

シンプルな EVALUATE ステートメントを使用して、Execute Queries Arrow エンドポイントに POST 要求を送信します。

import io
import pyarrow as pa
import requests

group_id = "YOUR_WORKSPACE_ID"
dataset_id = "YOUR_DATASET_ID"

url = (f"https://api.powerbi.com/v1.0/myorg/groups/{group_id}"
       f"/datasets/{dataset_id}/executeDaxQueries")

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json",
}

body = {"query": "EVALUATE TOPN(5, 'DimProduct')"}

response = requests.post(url, headers=headers, json=body)
response.raise_for_status()

reader = pa.ipc.open_stream(io.BytesIO(response.content))
table = reader.read_all()
df = table.to_pandas()

print(df)

3 - 結果を検査する

# Print the Arrow schema (column names and types)
print(table.schema)

# Show the first few rows as a pandas DataFrame
print(df.head())

# Access a specific column
print(table.column("ProductName").to_pylist()[:5])

リソースをクリーンアップする

テスト専用のMicrosoft Entra アプリ登録を作成した場合は、Azure ポータルに移動して削除します。 アクセス トークンは自動的に期限切れになり、手動による失効は必要ありません。