Datasets - Execute Dax Queries

Führt Dax-Abfragen (Data Analysis Expressions) für das bereitgestellte Dataset aus. Das Dataset muss sich im Arbeitsbereich "Mein Arbeitsbereich" befinden. Die Antwort wird im Apache Arrow-Format zurückgegeben.

Berechtigungen oder Abfragefehler führen zu:

  • Ein Antwortfehler, z 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.. B. .
  • Ein erfolgreicher HTTP-Statuscode (200) mit einem Datensatzbatch, der die Fehlerdetails enthält.

Erlaubnisse

Die REST-API zum Ausführen von Datasetausführungsabfragen, die unter "Integrationseinstellungen" zu finden ist, muss aktiviert sein.

Der Benutzer muss über Lese- und Buildberechtigungen für Datasets verfügen. Weitere Informationen finden Sie unter Verwalten von Zugriffsberechtigungen für Datasets.

Erforderlicher Bereich

Dataset.ReadWrite.All oder Dataset.Read.All

Limitations

  • Diese API ist nur für Datasets verfügbar, die in einer Kapazität gehostet werden.
  • Datasets, die in Azure Analysis Services gehostet werden oder über eine Liveverbindung mit einem lokalen Azure Analysis Services-Modell verfügen, werden nicht unterstützt.
  • Eine Abfrage pro API-Aufruf, die Abfrage kann jedoch mehrere Auswertungsanweisungen aufweisen.
  • Es gibt einen Grenzwert von 120 Abfrageanforderungen pro Minute pro Benutzer, unabhängig vom abgefragten Dataset.
  • Um Dienstprinzipale zu verwenden, stellen Sie sicher, dass die Administratormandanteneinstellung "Dienstprinzipale zulassen" die Verwendung von Power BI-APIs unter "Entwicklereinstellungen " aktiviert ist. Weitere Informationen zu semantischen Modellen mit RLS finden Sie unter RLS-Einschränkungen.
  • Derzeit werden nur DAX-Abfragen und INFO-Funktionen unterstützt. MDX- und DMV-Abfragen werden nicht unterstützt.

Antwortformat

Der Antworttext enthält mindestens einen verketteten Apache Arrow-IPC-Datenstrom. Jeder Datenstrom ist eigenständig mit eigenen Schema- und Datensatzbatches. Verwenden Sie zum Verarbeiten der Antwort eine Apache Arrow-Clientbibliothek .

Die Antwort kann die folgenden Rowsettypen enthalten, die durch Metadaten auf Schemaebene identifiziert werden (Schlüsselwertpaare im Pfeilschema):

  • Daten-Rowset: Enthält Abfrageergebnisse. Keine speziellen Metadatenschlüssel. Spaltennamen und -typen werden von der DAX-Abfrage bestimmt.
  • Fehler-Rowset: Identifiziert anhand IsError = true von Schemametadaten. Enthält Spalten: ErrorCode, , ErrorDescriptionErrorMessage, und Quellspeicherortfelder. Die Schemametadaten enthalten FaultCode auch (Hex-Fehlercode) und FaultString (Fehlermeldung).

Aufzeichnen von Batches in der Antwort verwenden LZ4_FRAME Komprimierung. Die Pyarrow-Bibliothek behandelt dies automatisch. Installieren Sie für .NET das Apache.Arrow.Compression NuGet-Paket.

Important

Abfragefehler geben HTTP 200 mit einem Fehler-Rowset im Pfeildatenstrom zurück. Überprüfen Sie schemametadaten IsError immer auf erfolgreiche HTTP-Statuscodes.

Das folgende Python Beispiel zeigt, wie Daten mithilfe von pyarrow0 gelesen und auf Fehler überprüft werden:

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())

Verwenden Sie für .NET die klasse DaxQueryArrowResponseReader in diesem SDK, die die Datenstromanalyse, Fehlererkennung und LZ4-Dekomprimierung behandelt.

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

URI-Parameter

Name In Erforderlich Typ Beschreibung
datasetId
path True

string (uuid)

Die Dataset-ID

Anforderungstext

Name Erforderlich Typ Beschreibung
query True

string

Abfragetext.

applicationContext

string

JSON-Struktur mit zusätzlichen Informationen zu einem Vorgang.

culture

string

Kulturcode, der gebietsschemaspezifische Abfrageformatierungen steuert, z en-US. B. . Weitere Informationen zu unterstützten Kulturcodes finden Sie unter Supported languages and countries/regions for Power BI.

customData

string

Benutzerdefinierte Daten für die Verwendung in dynamischen RLS. Beispielsweise North America kann auf die Funktion des Modells CUSTOMDATA() verwiesen werden.

effectiveUsername

string

Effektiver Benutzername für die Abfrage.

memoryLimit

integer (int64)

Speichergrenzwert (in KB) für die Abfrage.

queryTimeout

integer

Abfragetimeout in Sekunden.

resultSetRowCountLimit

integer

Maximale Anzahl von Zeilen, die zurückgegeben werden sollen. Der Standardwert ist 1.000.000 Zeilen.

roles

string[]

Dem Benutzer zugewiesene Rollen.

schemaOnly

boolean

Gibt an, ob die Abfrage nur das Schema zurückgeben darf.

Antworten

Name Typ Beschreibung
200 OK

string

Die Abfrage wurde erfolgreich ausgeführt. Gibt Apache Arrow formatierte Binärdaten zurück.

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

Beispiele

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

Execute query with culture

Beispielanforderung

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"
}

Beispiel für eine Antwort

Execute query with custom data

Beispielanforderung

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"
}

Beispiel für eine Antwort

Execute query with effective username

Beispielanforderung

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
}

Beispiel für eine Antwort

Execute simple DAX query

Beispielanforderung

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
}

Beispiel für eine Antwort

Definitionen

DatasetExecuteDaxQueriesRequest

Eine Anforderung zum Ausführen von Abfragen für ein Dataset

Name Typ Beschreibung
applicationContext

string

JSON-Struktur mit zusätzlichen Informationen zu einem Vorgang.

culture

string

Kulturcode, der gebietsschemaspezifische Abfrageformatierungen steuert, z en-US. B. . Weitere Informationen zu unterstützten Kulturcodes finden Sie unter Supported languages and countries/regions for Power BI.

customData

string

Benutzerdefinierte Daten für die Verwendung in dynamischen RLS. Beispielsweise North America kann auf die Funktion des Modells CUSTOMDATA() verwiesen werden.

effectiveUsername

string

Effektiver Benutzername für die Abfrage.

memoryLimit

integer (int64)

Speichergrenzwert (in KB) für die Abfrage.

query

string

Abfragetext.

queryTimeout

integer

Abfragetimeout in Sekunden.

resultSetRowCountLimit

integer

Maximale Anzahl von Zeilen, die zurückgegeben werden sollen. Der Standardwert ist 1.000.000 Zeilen.

roles

string[]

Dem Benutzer zugewiesene Rollen.

schemaOnly

boolean

Gibt an, ob die Abfrage nur das Schema zurückgeben darf.