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 wird nur von semantischen Modellen unterstützt, die mit der modernen Power BI-Dienst Infrastruktur kompatibel sind. Nicht unterstützte Kategorien umfassen:
- Semantische Modelle im Administratorüberwachungsarbeitsbereich und Nutzungsmetrikenmodelle.
- Semantische Modelle, die weiterhin die Kompatibilitätsstufe 1103 verwenden.
- Semantische Modelle, die veraltete Features wie Pushsemantikmodelle, Modelle verwenden, die in der Power BI-Dienst aus CSV-Dateien oder Inhaltspaketen erstellt wurden.
- 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.
- Abfragebeschränkungen:
- Eine Abfrage pro API-Aufruf, die Abfrage kann jedoch mehrere Auswertungsanweisungen aufweisen.
- Die folgenden Grenzwerte gelten unabhängig vom abgefragten Semantikmodell:
- Der globale Grenzwert beträgt 120 Abfrageanforderungen pro Minute pro Benutzer.
- Power BI Pro und Premium Per User (PPU) sind auf 40 Abfrageanforderungen pro Minute pro Benutzer beschränkt.
- Derzeit werden nur DAX-Abfragen und INFO-Funktionen unterstützt. MDX- und DMV-Abfragen werden nicht unterstützt.
- Einschränkungen für Dienstprinzipal und Identitätswechsel:
- 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.
- Die
effectiveUsernameEigenschaft kann nur von Benutzern verwendet werden, die Administratoren des Arbeitsbereichs sind, der das semantische Modell enthält. - Die
rolesEigenschaft kann von Benutzern nur verwendet werden, wenn sie Mitglieder der angegebenen Rolle oder Administratoren des Arbeitsbereichs sind, der das semantische Modell enthält. - Dienstprinzipale können keine Rollenmitglieder sein. Ein Dienstprinzipal kann nur verwendet werden
roles, wenn es sich um einen Administrator des Arbeitsbereichs handelt, der das semantische Modell enthält.
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=truevon Schemametadaten. Enthält Spalten:ErrorCode, ,ErrorMessageErrorDescription, und Quellspeicherortfelder. Die Schemametadaten enthaltenFaultCodeauch (Hex-Fehlercode) undFaultString(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
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 |
|---|---|---|---|---|
|
dataset
|
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 |
|
| customData |
string |
Benutzerdefinierte Daten für die Verwendung in dynamischen RLS. Beispielsweise |
|
| 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 |
| customData |
string |
Benutzerdefinierte Daten für die Verwendung in dynamischen RLS. Beispielsweise |
| 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. |