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=truevon Schemametadaten. Enthält Spalten:ErrorCode, ,ErrorDescriptionErrorMessage, 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. |