Beherrschung der Execute DAX Queries REST API

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.

Diagramm mit der REST-API-Architektur

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.