Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de API DAX-query's uitvoeren kunt u DAX-query's uitvoeren op Power BI semantische modellen en resultaten programmatisch ophalen in de Apache Arrow IPC-indeling, een binaire kolomindeling die is ontworpen voor analyses met hoge prestaties. Door queryresultaten rechtstreeks in de pijlindeling te retourneren, elimineert de API serialisatieoverhead en krijgt uw toepassing toegang tot sterk getypte, analyseklare gegevens.
Waarom Pijl?
Het bestaande eindpunt Query's uitvoeren retourneert resultaten als JSON. Het nieuwere execute DAX Querys-eindpunt retourneert uitsluitend resultaten in de Apache Arrow IPC-indeling, een binaire indeling met kolommen die is ontworpen voor hoogwaardige analyses. In de volgende tabel worden de twee antwoordindelingen vergeleken:
| JSON (API voor het uitvoeren van query's) | Arrow (API voor het uitvoeren van DAX-query's) | |
|---|---|---|
| Formatteren | Rijgeoriënteerde JSON | Kolomgebaseerde Arrow IPC |
| Payloadgrootte | Groter (overhead voor tekenreekscodering) | Kleiner (binair, gecomprimeerd) |
| Typegetrouwheid | Met verlies (alles is een tekenreeks of getal) | Verliesloos (systeemeigen datum, decimaal, int64) |
| Deserialisatie | Parsen + typeconversie afdwingen | Lezen in een DataFrame zonder kopiëren |
| Het beste voor | Kleine query's, eenvoudige integraties | Grote resultaatverzamelingen, analyseworkflows |
Tip
Gebruik de API voor het uitvoeren van DAX-query's voor elke clienttoepassing die binaire Arrow IPC-streams kan verwerken — dit omvat Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go en andere talen met ondersteuning voor de Arrow-bibliotheek. Voor low-code-/no-codeplatforms, Power Automate-flows of andere oplossingen die alleen JSON kunnen verwerken, blijft u de oudere Execute Queries API gebruiken. Hoewel de EXECUTE Query's-API niet beschikt over de geavanceerde parameters die beschikbaar zijn in DAX-query's uitvoeren (zoals queryTimeout en resultsetRowcountLimit), blijft deze de juiste keuze wanneer JSON-uitvoer vereist is.
IPC-indeling van Apache Arrow
Apache Arrow definieert een taalonafhankelijke kolomgeheugenindeling die algemeen is gebruikt in het gegevensecosysteem, waardoor deze een van de meest breed ondersteunde gegevensweergaven beschikbaar is. Het Arrow IPC-streamingformaat (Inter-Process Communication) omsluit kolomgeoriënteerde recordbatches met schemametadata, waardoor:
- Leesbewerkingen met nulkopie : clients kunnen het antwoord rechtstreeks in het geheugen toewijzen zonder gegevens tussen buffers te parseren of te kopiëren.
-
Ondersteuning voor meerdere talen: systeemeigen bibliotheken bestaan voor Python (), C# (
pyarrowApache.Arrow), Java, Rust, Go, JavaScript en meer, zodat u resultaten in vrijwel elke taal kunt gebruiken. - Efficiënte compressie - LZ4-compressie vermindert de nettoladinggrootte.
- Schema-eerst-ontwerp — elke Arrow-stroom begint met een schemabericht waarin kolomnamen, typen en metagegevens worden opgegeven, zodat clients de exacte gegevensindeling kennen voordat ze gegevensrijen lezen.
Toewijzing van DAX aan Arrow-typen
De API voor het uitvoeren van DAX-query's brengt DAX-gegevenstypen als volgt in kaart naar Arrow-typen:
| DAX-type | Pijltype | Aantekeningen |
|---|---|---|
| Geheel getal (geheel getal) | int64 |
Direct 64-bits geheel getal |
| Decimal | double |
Dubbele precisie drijvende komma |
| Valuta (vast decimaal) | decimal128(19, 4) |
Precisie van vier decimalen zonder verlies |
| Double | double |
Dubbele precisie drijvende komma |
| DateTime | date64 |
Milliseconden sinds de Unix-epoch |
| Boolean | bool |
|
| String | utf8 |
Standaard woordenboekgecodeerd voor efficiëntie |
| Binary | binary |
|
| Variatie | dense_union |
Unie van int64, valuta, bool, datum64, float64, utf8 |
Wanneer gebruikt u het pijleindpunt
Gebruik het pijleindpunt wanneer u:
- Haal meer dan een paar honderd rijen op uit een semantisch model.
- Voer resultaten in pandas, polars, Spark of andere frameworks voor kolomverwerking in.
- Bouw een mid-tier-service die als proxy fungeert voor DAX-query's voor achterliggende afnemers.
- Nauwkeurige numerieke of datumtypen nodig hebben zonder handmatige typecodering.
Voor eenvoudige, kleine query's of snelle ad-hoc lookups waar JSON de voorkeur heeft, blijft de oudere Execute Querys-API een eenvoudige keuze.
Overwegingen en beperkingen
Voordat u de API Execute DAX Queries gaat gebruiken, bekijkt u de volgende verschillen en beperkingen ten opzichte van de oudere API Execute Queries:
| API voor query's uitvoeren | API voor het uitvoeren van DAX-query's | |
|---|---|---|
| Eindpunt | executeQueries |
executeDaxQueries |
| Capaciteitsvereiste | Werkt met Pro, PPU en Premium/Fabric | Premium- of Fabric-capaciteit alleen |
| Tenantinstellingen | Rest API voor het uitvoeren van query's voor gegevenssets (onder Instellingen voor ontwikkelaars) | Rest API voor het uitvoeren van gegevenssetquery's (onder Instellingen voor ontwikkelaars) en XMLA-eindpunten toestaan en analyseren in Excel met on-premises semantische modellen (onder Integratie-instellingen) zijn vereist. Toestaan dat service-principals Power BI API's (onder Instellingen voor ontwikkelaars) gebruiken, is alleen vereist bij verificatie met een service-principal. |
| Queryinvoer |
queries[] array (één query per aanroep) |
Eén query tekenreeks (meerdere EVALUATE instructies toegestaan- zie Zelfstudie: Meerdere EVALUATE-instructies uitvoeren met PowerShell) |
| Antwoordindelingen | Alleen JSON | Alleen Arrow IPC |
| Aanvullende parameters | Beperkt |
queryTimeout, resultsetRowcountLimit, schemaOnly, executionMetrics, , memoryLimit |
| Streaming | Niet gestreamd | End-to-end gestreamd (overdracht in chunks) |
| Limieten voor resultaatgrootte | Vaste limiet van 100.000 rijen en 1.000.000 waarden per query | Geen vaste rij- of waardelimiet (gebruik resultsetRowcountLimit om indien nodig een maximum in te stellen) |
| Paginering | Niet ondersteund | Niet ondersteund: gebruiken TOPN of resultsetRowcountLimit voor grote resultaten |
| Arrow-bibliotheek vereist | Nee (alleen JSON) | Ja — een Arrow-bibliotheek (zoals pyarrow of Apache.Arrow) is vereist om de reactie te deserialiseren |
Verwante inhoud
- Aan de slag met de REST API voor DAX-query's uitvoeren
- Zelfstudie: Een DAX-queryuitvoeringsservice in de middellaag bouwen
- Zelfstudie: Meerdere EVALUATE-instructies uitvoeren met PowerShell
- Tutorial: grote Python extractie voor gegevenswetenschap
- Aanbevolen procedures voor de REST API voor DAX-query's uitvoeren
- REST API-verwijzing voor DAX-query's uitvoeren
- REST-API's voor Power BI