Datasets - Execute Dax Queries

指定されたデータセットに対してデータ分析式 (DAX) クエリを実行します。 データセットは マイ ワークスペースに存在する必要があります。 応答は Apache Arrow 形式で返されます。

アクセス許可またはクエリ エラーの結果は次のようになります。

  • XMLA endpoint feature is disabled. Turn on the tenant setting 'Allow XMLA endpoints and Analyze in Excel with on-premises semantic models' to enable this feature.などの応答エラー。
  • エラーの詳細を含むレコード バッチを含む成功した HTTP 状態コード (200)。

Permissions

統合設定の下にあるテナント設定データセット実行クエリ REST API を有効にする必要があります。

ユーザーには、データセットの読み取りとビルドのアクセス許可が必要です。 詳細については、「 データセットアクセス許可の管理」を参照してください。

必要なスコープ

Dataset.ReadWrite.All または Dataset.Read.All

Limitations

  • この API は、Power BI サービス最新のインフラストラクチャと互換性のあるセマンティック モデルでのみサポートされます。 サポートされていないカテゴリは次のとおりです。
    • 管理者監視ワークスペースのセマンティック モデルと使用状況メトリック モデル。
    • 1103 互換性レベルを引き続き使用するセマンティック モデル。
    • プッシュ セマンティック モデル、CSV ファイルからPower BI サービスで作成されたモデル、コンテンツ パックなど、非推奨の機能を使用するセマンティック モデル。
  • Azure Analysis Services でホストされているデータセット、またはオンプレミスの Azure Analysis Services モデルへのライブ接続を持つデータセットはサポートされていません。
  • クエリの制限事項:
    • API 呼び出しごとに 1 つのクエリが、クエリに複数の evaluate ステートメントを含めることができます。
    • クエリされるセマンティック モデルに関係なく、次の制限が適用されます。
      • グローバル制限は、ユーザーごとに 1 分あたり 120 個のクエリ要求です。
      • Power BI Proと Premium Per User (PPU) は、ユーザーあたり 1 分あたり 40 個のクエリ要求に制限されます。
    • 現時点では、DAX クエリと INFO 関数のみがサポートされています。 MDX クエリと DMV クエリはサポートされていません。
  • サービス プリンシパルと偽装の制限事項:
    • サービス プリンシパルを使用するには、[開発者設定] の [サービス プリンシパルによる Power BI API の使用をサービス プリンシパルに許可する] 設定が有効になっていることを確認します。 RLS を使用したセマンティック モデルの詳細については、 RLS の制限事項を参照してください。
    • effectiveUsername プロパティは、セマンティック モデルを含むワークスペースの管理者であるユーザーのみが使用できます。
    • roles プロパティは、セマンティック モデルを含むワークスペースの指定されたロールまたは管理者のメンバーである場合にのみ、ユーザーが使用できます。
    • サービス プリンシパルをロール メンバーにすることはできません。 サービス プリンシパルは、セマンティック モデルを含むワークスペースの管理者である場合にのみ、 roles を使用できます。

応答形式

応答本文には、1 つ以上の連結された Apache Arrow IPC ストリームが含まれています。 各ストリームは、独自のスキーマとレコード バッチで自己完結型です。 応答を処理するには、 Apache Arrow クライアント ライブラリを使用します。

応答には、スキーマ レベルのメタデータ (方向スキーマのキーと値のペア) によって識別される、次の行セット型が含まれる場合があります。

  • データ行セット: クエリ結果が含まれます。 特別なメタデータ キーはありません。 列名と型は、DAX クエリによって決まります。
  • エラー行セット: スキーマ メタデータ内の IsError = true によって識別されます。 ErrorCodeErrorMessageErrorDescription、ソースの場所の各フィールドの列が含まれます。 スキーマ メタデータには、 FaultCode (16 進数のエラー コード) と FaultString (エラー メッセージ) も含まれます。

応答でバッチを記録する場合は、圧縮LZ4_FRAME使用します。 pyarrow ライブラリはこれを自動的に処理します。 .NETの場合は、Apache.Arrow.Compression NuGet パッケージをインストールします。

Important

クエリ エラーでは、HTTP 200 が返され、方向ストリームにエラー行セットが表示されます。 成功した HTTP 状態コードでも、 IsError のスキーマ メタデータを常に確認してください。

次のPython例は、pyarrow を使用してデータを読み取り、エラーを確認する方法を示しています。

import io
import pyarrow as pa

# response = requests.post(url, headers=headers, json=request_body)
stream = io.BytesIO(response.content)
results = []

while stream.tell() < len(response.content):
    try:
        reader = pa.ipc.open_stream(stream)
        table = reader.read_all()
        metadata = {
            k.decode(): v.decode()
            for k, v in (reader.schema.metadata or {}).items()
        }
        if metadata.get("IsError") == "true":
            raise RuntimeError(
                f"Query error [{metadata.get('FaultCode')}]: "
                f"{metadata.get('FaultString')}"
            )
        else:
            results.append(table)
    except pa.ArrowInvalid:
        break

print(results[0].to_pandas())

.NETの場合は、ストリーム解析、エラー検出、LZ4 展開を処理するこの SDK の DaxQueryArrowResponseReader クラスを使用します。

POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/executeDaxQueries

URI パラメーター

名前 / 必須 説明
datasetId
path True

string (uuid)

データセット ID

要求本文

名前 必須 説明
query True

string

クエリ テキスト。

applicationContext

string

操作に関する追加情報を含む JSON 構造体。

culture

string

en-USなど、ロケール固有のクエリ書式設定を制御するカルチャ コード。 サポートされているカルチャ コードの詳細については、「Power BI のサポートされている言語と国/地域」を参照してください。

customData

string

動的 RLS で使用するカスタム データ。 たとえば、 North America はモデルの CUSTOMDATA() 関数によって参照できます。

effectiveUsername

string

クエリの有効なユーザー名。

memoryLimit

integer (int64)

クエリのメモリ制限 (KB 単位)。

queryTimeout

integer

クエリのタイムアウト (秒単位)。

resultSetRowCountLimit

integer

返される行の最大数。 既定値は 1,000,000 行です。

roles

string[]

ユーザーに割り当てられたロール。

schemaOnly

boolean

クエリがスキーマのみを返す必要があるかどうか。

応答

名前 説明
200 OK

string

クエリが正常に実行されました。 Apache Arrow 形式のバイナリ データを返します。

Media Types: "application/vnd.apache.arrow.stream"

Execute query with culture
Execute query with custom data
Execute query with effective username
Execute simple DAX query

Execute query with culture

要求のサンプル

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE ROW(\"Formatted Date\", FORMAT(DATE(2024, 12, 31), \"Long Date\"))",
  "culture": "en-US"
}

応答のサンプル

Execute query with custom data

要求のサンプル

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE FILTER('Sales', 'Sales'[Region] = CUSTOMDATA())",
  "customData": "North America"
}

応答のサンプル

Execute query with effective username

要求のサンプル

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE SUMMARIZECOLUMNS('Sales'[Region], \"Total\", SUM('Sales'[Amount]))",
  "effectiveUsername": "user@contoso.com",
  "roles": [
    "SalesRole"
  ],
  "queryTimeout": 300
}

応答のサンプル

Execute simple DAX query

要求のサンプル

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE VALUES('Product'[Category])",
  "queryTimeout": 600,
  "schemaOnly": false,
  "resultSetRowCountLimit": 100000
}

応答のサンプル

定義

DatasetExecuteDaxQueriesRequest

データセットに対してクエリを実行する要求

名前 説明
applicationContext

string

操作に関する追加情報を含む JSON 構造体。

culture

string

en-USなど、ロケール固有のクエリ書式設定を制御するカルチャ コード。 サポートされているカルチャ コードの詳細については、「Power BI のサポートされている言語と国/地域」を参照してください。

customData

string

動的 RLS で使用するカスタム データ。 たとえば、 North America はモデルの CUSTOMDATA() 関数によって参照できます。

effectiveUsername

string

クエリの有効なユーザー名。

memoryLimit

integer (int64)

クエリのメモリ制限 (KB 単位)。

query

string

クエリ テキスト。

queryTimeout

integer

クエリのタイムアウト (秒単位)。

resultSetRowCountLimit

integer

返される行の最大数。 既定値は 1,000,000 行です。

roles

string[]

ユーザーに割り当てられたロール。

schemaOnly

boolean

クエリがスキーマのみを返す必要があるかどうか。