Mastering av Execute DAX Queries REST API-et

Execute DAX Queries API lar deg kjøre DAX-spørringer mot Power BI semantiske modeller og hente resultater programmatisk i Apache Arrow IPC-format, et kolonneformat binært designet for høyytelsesanalyse. Ved å returnere spørringsresultater direkte i Arrow-format, eliminerer API-et serialiseringskostnader og gir applikasjonen tilgang til sterkt typet, analyseklare data.

diagram som viser Execute DAX Queries REST API-arkitekturen. Klientapplikasjoner (Python, C#, PowerShell) sender POST-forespørsler og mottar Arrow IPC-strømmer fra Power BI-tjenesten. Arrows strømbehandlingspipeline viser seks klient-side faser: Motta, Deserialize, Validere, Materialisere, Transformere og Konsumere.

Hvorfor Arrow?

Det eksisterende Execute Queries-endepunktet returnerer resultater som JSON. Det nyere Execute DAX Queries-endepunktet returnerer resultater utelukkende i Apache Arrow IPC-format, et kolonneformat binært designet for høyytelsesanalyse. Følgende tabell sammenligner de to responsformatene:

JSON (Execute Queries API) Arrow (Execute DAX Queries API)
Format Radorientert JSON Columnar Arrow IPC
Nyttelaststørrelse Større (strengkodingsoverhead) Mindre (binær, komprimert)
Typenøyaktighet Tapsbasert (alt er streng/tall) Tapsfri (opprinnelig dato, desimal, int64)
Deserialisering Parse + type-koerce Nullkopilesing inn i DataFrame
Best for Små spørringer, enkle integrasjoner Store resultatsett, analysepipelines

Tips

Bruk Execute DAX Queries API for alle klientapplikasjoner som kan konsumere binære Arrow IPC-strømmer — dette inkluderer Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go og andre språk med Arrow-bibliotekstøtte. For low-code/no-code-plattformer, Power Automate flows eller andre løsninger som kun kan bruke JSON, fortsett å bruke det eldre API-et Execute Queries. Selv om Execute Queries API mangler de avanserte parameterne som er tilgjengelige i Execute DAX Queries (som queryTimeout og resultsetRowcountLimit), forblir det det riktige valget når JSON-utgang kreves.

Apache Arrow IPC-format

Apache Arrow definerer et språkuavhengig kolonneminneformat som har blitt bredt tatt i bruk i dataøkosystemet, noe som gjør det til en av de mest støttede datarepresentasjonene som finnes. Arrow IPC (Inter-Process Communication) strømmeformatet pakker kolonnepostbatcher inn skjemametadata, noe som muliggjør:

  • Zero-copy reads — klienter kan mappe svaret direkte inn i minnet uten å måtte parse eller kopiere data mellom buffere.
  • Tverrspråklig støtte — det finnes native biblioteker for Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript og mer, så du kan konsumere resultater i praktisk talt hvilket som helst språk.
  • Effektiv komprimering — LZ4-komprimering reduserer nyttelaststørrelsen.
  • Skjema-først-design — hver Arrow-strøm starter med en skjemamelding som erklærer kolonnenavn, typer og metadata, slik at klientene kjenner det eksakte dataoppsettet før de leser rader.

DAX til pil-type kartlegging

Execute DAX Queries API kartlegger DAX-datatyper til Arrow-typer som følger:

DAX-type Piltype Merknader
Heltall (heltall) int64 Direkte 64-bits heltall
Desimaltall double Dobbelpresisjons flyttall
Valuta (fast desimal) decimal128(19, 4) Tapsfri presisjon på fire desimalplasser
Dobbel double Dobbelpresisjons flyttall
DatoTid date64 Millisekunder siden Unix-epoken
boolsk bool
Streng utf8 Ordbok-kodet som standard for effektivitet
Binary binary
Variant dense_union Union av int64, valuta, bool, dato64, float64, utf8

Når man skal bruke Arrow-endepunktet

Bruk Arrow-endepunktet når du:

  • Hente mer enn noen hundre rader fra en semantisk modell.
  • Feed resultater inn i pandas, polars, Spark eller andre søyleformede prosesseringsrammeverk.
  • Bygg en mellomstor tjeneste som proxyer DAX-spørringer for nedstrøms forbrukere.
  • Trenger presise numeriske eller datotyper uten manuell typepåvirkning.

For enkle, små spørringer eller raske ad-hoc-oppslag der JSON foretrekkes, er det eldre Execute Queries API-et fortsatt et enkelt valg.

Hensyn og begrensninger

Før du tar i bruk Execute DAX Queries API, bør du gjennomgå følgende forskjeller og begrensninger sammenlignet med det eldre Execute Queries API:

Execute Queries API Kjør DAX Queries API
Endepunkt executeQueries executeDaxQueries
Kapasitetskrav Fungerer på Pro, PPU og Premium/Fabric Kun Premium- eller Fabric-kapasitet
Leierinnstillinger Dataset Execute Query REST API (under utviklerinnstillinger) Dataset Execute Queries REST API (under Developer settings) og Allow XMLA endpoints and Analyze in Excel with on-premises semantic models (under Integration settings) kreves. Tillat tjenesteprincipaler å bruke Power BI APIer (under Developer settings) er kun nødvendig ved autentisering med en tjenesteprincipal.
Spørringsinput queries[] array (én spørring per kall) Enkelt query streng (flere EVALUATE setninger tillatt)
Responsformater Kun JSON Kun Arrow IPC
Ytterligere parametere Begrenset queryTimeout, resultsetRowcountLimit, schemaOnly, , executionMetricsmemoryLimit
Direkteavspilling Ikke strømmet Strømmet ende-til-ende (chunked transfer)
Begrensninger for resultatstørrelse Hard grense på 100 000 rader og 1 000 000 verdier per spørring Ingen fast rad- eller verdigrense (bruk resultsetRowcountLimit for å sette tak om nødvendig)
Paginering Støttes ikke Ikke støttet — bruk TOPN eller resultsetRowcountLimit for store resultater
Arrow-bibliotek kreves Nei (kun JSON) Ja — et Arrow-bibliotek (for eksempel pyarrow eller Apache.Arrow) er nødvendig for å deserialisere svaret