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 は、容量でホストされているデータセットでのみ使用できます。
  • Azure Analysis Services でホストされているデータセット、またはオンプレミスの Azure Analysis Services モデルへのライブ接続を持つデータセットはサポートされていません。
  • API 呼び出しごとに 1 つのクエリが、クエリに複数の evaluate ステートメントを含めることができます。
  • クエリを実行するデータセットに関係なく、ユーザーごとに 1 分あたり 120 クエリ要求の制限があります。
  • サービス プリンシパルを使用するには、[開発者設定] の [サービス プリンシパルによる Power BI API の使用をサービス プリンシパルに許可する] 設定が有効になっていることを確認します。 RLS を使用したセマンティック モデルの詳細については、 RLS の制限事項を参照してください。
  • 現時点では、DAX クエリと INFO 関数のみがサポートされています。 MDX クエリと DMV クエリはサポートされていません。

応答形式

応答本文には、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

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