Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der API "DAX-Abfragen ausführen" können Sie DAX-Abfragen mit Power BI semantischen Modellen ausführen und Ergebnisse programmgesteuert im Apache Arrow IPC-Format abrufen, einem spaltenbasierten Binärformat, das für Hochleistungsanalysen entwickelt wurde. Durch die direkte Rückgabe von Abfrageergebnissen im Pfeilformat beseitigt die API den Serialisierungsaufwand und ermöglicht Ihrer Anwendung Zugriff auf stark typierte, analysebereite Daten.
Warum Pfeil?
Der vorhandene Execute Queries-Endpunkt gibt Ergebnisse als JSON zurück. Der neuere Execute DAX Queries-Endpunkt gibt ausschließlich Ergebnisse im Apache Arrow IPC-Format zurück, einem spaltenbasierten Binärformat, das für hochleistungsorientierte Analysen entwickelt wurde. In der folgenden Tabelle werden die beiden Antwortformate verglichen:
| JSON (Execute Queries API) | Pfeil (DAX-Abfragen-API ausführen) | |
|---|---|---|
| Format | Zeilenorientiertes JSON | Columnar Arrow IPC |
| Nutzlastgröße | Größer (Zeichenfolgencodierungsaufwand) | Kleiner (binär, komprimiert) |
| Typtreue | Verlustbehaftet (alles ist String/Zahl) | Verlustfrei (systemeigenes Datum, Dezimalzahl, int64) |
| Deserialisierung | Analyse + Typkoerz | Nullkopie lesen in DataFrame |
| Am besten geeignet für | Kleine Abfragen, einfache Integrationen | Große Ergebnismengen, Analyse-Pipelines |
Tip
Verwenden Sie die API "DAX-Abfragen ausführen" für jede Clientanwendung, die binäre Pfeil-IPC-Datenströme nutzen kann. Dazu gehören Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go und andere Sprachen mit Unterstützung für Pfeilbibliotheken. Für Low-Code-/No-Code-Plattformen, Power Automate Flows oder andere Lösungen, die nur JSON verarbeiten können, verwenden Sie weiterhin die ältere Execute Queries-API. Obwohl die Execute Queries-API nicht über die erweiterten Parameter verfügt, die in Execute DAX Queries (wie queryTimeout und resultsetRowcountLimit) verfügbar sind, bleibt sie die angemessene Wahl, wenn eine JSON-Ausgabe benötigt wird.
Apache Arrow IPC-Format
Apache Arrow definiert ein sprachunabhängiges spaltenunabhängiges Speicherformat, das im gesamten Datenökosystem weit verbreitet wurde und es zu einer der umfassendsten unterstützten Datendarstellungen macht. Das Streamingformat Arrow IPC (Inter-Process Communication) umschließt spaltenweise Datensatzbatches mit Schemametadaten und ermöglicht Folgendes:
- Lesevorgänge ohne Kopie – Clients können die Antwort direkt in den Arbeitsspeicher zuordnen, ohne Daten zwischen Puffern zu analysieren oder zu kopieren.
-
Cross-Language-Unterstützung – systemeigene Bibliotheken sind für Python (
pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript und mehr vorhanden, sodass Sie Ergebnisse in praktisch jeder Sprache nutzen können. - Effiziente Komprimierung – Die LZ4-Komprimierung reduziert die Nutzlastgröße.
- Schema-first-Entwurf – jeder Pfeildatenstrom beginnt mit einer Schemameldung, die Spaltennamen, Typen und Metadaten deklariert, damit Clients das genaue Datenlayout kennen, bevor Zeilen gelesen werden.
DAX-zu-Arrow-Typ-Zuordnung
Die Execute DAX-Abfragen-API ordnet DAX-Datentypen den Arrow-Typen wie folgt zu:
| DAX-Typ | Pfeiltyp | Notizen |
|---|---|---|
| Ganze Zahl | int64 |
Direkte 64-Bit-Ganzzahl |
| Decimal | double |
Gleitkomma mit doppelter Genauigkeit |
| Währung (feste Dezimalzahl) | decimal128(19, 4) |
Verlustlose Vier-Dezimalstellen-Genauigkeit |
| Double | double |
Gleitkomma mit doppelter Genauigkeit |
| Datum/Uhrzeit | date64 |
Millisekunden seit Unix-Epoche |
| Boolean | bool |
|
| Schnur | utf8 |
Wörterbuchcodiert standardmäßig aus Effizienzgründen |
| Binary | binary |
|
| Variante | dense_union |
Union von int64, Währung, bool, date64, float64, utf8 |
Wann der Pfeilendpunkt verwendet werden soll
Verwenden Sie den Pfeilendpunkt, wenn Sie:
- Rufen Sie mehr als ein paar hundert Zeilen aus einem Semantikmodell ab.
- Füttern Sie Ergebnisse in pandas, polars, Spark oder andere spaltenverarbeitende Frameworks.
- Erstellen Sie einen Mid-Tier-Dienst, der DAX-Abfragen für downstream-Consumer proxiest.
- Benötigen Sie präzise numerische oder Datumstypen ohne manuelle Eingabekoersion.
Für einfache, kleine Abfragen oder schnelle Ad-hoc-Nachschlagevorgänge, bei denen JSON bevorzugt wird, bleibt die ältere Execute Queries-API eine einfache Wahl.
Überlegungen und Einschränkungen
Überprüfen Sie vor der Einführung der Execute DAX-Abfragen-API die folgenden Unterschiede und Einschränkungen im Vergleich zur älteren Execute Queries-API:
| Api zum Ausführen von Abfragen | Ausführen der DAX-Abfrage-API | |
|---|---|---|
| Endpunkt | executeQueries |
executeDaxQueries |
| Kapazitätsanforderung | Funktioniert mit Pro, PPU und Premium/Fabric | Nur Premium- oder Fabric-Kapazität |
| Mandanteneinstellungen | REST-API für Datasetausführungsabfragen (unter Entwicklereinstellungen) | Dataset Execute Queries REST API (unter Entwicklereinstellungen) und XMLA-Endpunkte zulassen und Analysieren in Excel mit lokalen semantischen Modellen (unter Integrationseinstellungen) sind erforderlich. Erlaube-Dienstprinzipalen die Nutzung der Power BI-APIs (unter Entwickler-Einstellungen) sind nur bei der Authentifizierung mit einem Dienstprinzipal erforderlich. |
| Abfrageeingabe |
queries[] Array (eine Abfrage pro Aufruf) |
Einzelne query Zeichenfolge (mehrere EVALUATE Anweisungen zulässig) |
| Antwortformate | Nur JSON | Arrow IPC nur |
| Zusätzliche Parameter | Limited |
queryTimeout, , resultsetRowcountLimitschemaOnly, , executionMetricsmemoryLimit |
| Streaming | Nicht gestreamt | Gestreamtes Ende-zu-Ende (blockierte Übertragung) |
| Grenzwerte für die Ergebnisgröße | Harte Grenze von 100.000 Zeilen und 1.000.000 Werten pro Abfrage | Kein festes Zeilen- oder Wertlimit (bei Bedarf resultsetRowcountLimit verwenden, um es zu begrenzen) |
| Seitennummerierung | Nicht unterstützt | Nicht unterstützt – Verwenden TOPN oder resultsetRowcountLimit für große Ergebnisse |
| Pfeilbibliothek erforderlich | Nein (nur JSON) | Ja – eine Arrow-Bibliothek (z. B. pyarrow oder Apache.Arrow) ist erforderlich, um die Antwort deserialisieren zu können. |
Verwandte Inhalte
- Erste Schritte mit der REST-API "DAX-Abfragen ausführen"
- Lernprogramm: Erstellen eines DAX-Abfrageausführungsdiensts auf mittlerer Ebene
- Tutorial: Python-Extraktion in großem Umfang für Data Science
- Bewährte Methoden für die REST-API zum Ausführen von DAX-Abfragen
- REST-API-Referenz für DAX-Abfragen ausführen
- Power BI REST-APIs