Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'API Esegui query DAX consente di eseguire query DAX su modelli semantici Power BI e di recuperare i risultati a livello di codice in formato Apache Arrow IPC, un formato binario a colonne progettato per l'analisi ad alte prestazioni. Restituendo i risultati della query direttamente in formato Arrow, l'API elimina il sovraccarico di serializzazione e concede all'applicazione l'accesso ai dati fortemente tipizzati e pronti per l'analisi.
Perché Arrow?
L'endpoint Execute Queries esistente restituisce i risultati come JSON. L'endpoint Execute DAX Querys più recente restituisce risultati esclusivamente in formato IPC Apache Arrow, un formato binario a colonne progettato per l'analisi ad alte prestazioni. La tabella seguente confronta i due formati di risposta:
| JSON (API di esecuzione delle query) | Freccia (API che esegue query DAX) | |
|---|---|---|
| Formato | JSON orientato alle righe | Freccia a colonne IPC |
| Dimensioni del payload | Più grande (sovraccarico di codifica delle stringhe) | Più piccolo (binario, compresso) |
| Fedeltà dei tipi | Lossy (tutto è stringa/numero) | Lossless (formato nativo, decimale, int64) |
| Deserializzazione | Analisi + coercizione di tipo | Lettura senza copia in DataFrame |
| Migliore per | Query di piccole dimensioni, integrazioni semplici | Set di risultati di grandi dimensioni, pipeline di analisi |
Tip
Usare l'API Esegui query DAX per qualsiasi applicazione client in grado di utilizzare flussi IPC Arrow binari, inclusi Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go e altri linguaggi con supporto per la libreria Arrow. Per piattaforme con poco codice o senza codice, flussi di Power Automate o altre soluzioni che possono usare solo JSON, continuare a usare l'API Execute Queries. Anche se l'API Esegui query non dispone dei parametri avanzati disponibili in Esegui query DAX (ad esempio queryTimeout e resultsetRowcountLimit), rimane la scelta appropriata quando è necessario l'output JSON.
Formato IPC di Apache Arrow
Apache Arrow definisce un formato di memoria a colonne indipendente dal linguaggio ampiamente adottato nell'ecosistema di dati, rendendolo una delle rappresentazioni dei dati più ampiamente supportate. Il formato di streaming Arrow IPC (Inter-Process Communication) incapsula i batch di record a colonne con metadati di schema, il quale abilita:
- Letture senza copia : i client possono eseguire il mapping della risposta direttamente in memoria senza analizzare o copiare dati tra buffer.
-
Supporto per il linguaggio incrociato: esistono librerie native per Python (
pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript e altro ancora, in modo da poter usare i risultati praticamente in qualsiasi linguaggio. - Compressione efficiente : la compressione LZ4 riduce le dimensioni del payload.
- Progettazione schema-first: ogni flusso Arrow inizia con un messaggio di schema che dichiara i nomi delle colonne, i tipi e i metadati, affinché i client possano conoscere il layout esatto dei dati prima di leggere qualsiasi riga.
Mappatura dei tipi da DAX ad Arrow
L'API per eseguire query DAX esegue il mapping dei tipi di dati DAX ai tipi Arrow come segue:
| Tipo DAX | Tipo freccia | Notes |
|---|---|---|
| Numero intero | int64 |
Numero intero a 64 bit diretto |
| Decimal | double |
Virgola mobile a precisione doppia |
| Valuta (decimale fisso) | decimal128(19, 4) |
Precisione a quattro cifre decimali senza perdita |
| Double | double |
Virgola mobile a precisione doppia |
| DateTime | date64 |
Millisecondi dall'epoca di Unix |
| Booleano | bool |
|
| string | utf8 |
Codifica del dizionario per impostazione predefinita per l'efficienza |
| Binary | binary |
|
| Variant | dense_union |
Unione di int64, valuta, bool, date64, float64, utf8 |
Quando usare l'endpoint Arrow
Usa l'endpoint Freccia quando:
- Recuperare più di poche centinaia di righe da un modello semantico.
- Inserire i risultati in pandas, polari, Spark o altri framework di elaborazione a colonne.
- Creare un servizio di livello intermedio che funge da proxy per le query DAX destinate ai consumer downstream.
- Sono necessari tipi numerici o di data precisi senza coercizione manuale del tipo.
Per semplici query di piccole dimensioni o ricerche ad hoc rapide in cui è preferibile JSON, l'API Esegui query meno recenti rimane una scelta semplice.
Considerazioni e limitazioni
Prima di adottare l'API Esegui query DAX, esaminare le differenze e i vincoli seguenti rispetto all'API Esegui query precedente:
| API per l'esecuzione di query | Eseguire l'API query DAX | |
|---|---|---|
| Punto finale | executeQueries |
executeDaxQueries |
| Requisito di capacità | Funziona su Pro, PPU e Premium/Fabric | Solo capacità Premium o Fabric |
| Impostazioni del tenant | API REST per l'esecuzione di query su dataset (in Impostazioni sviluppatore) | Dataset Esegui query API REST (in Impostazioni Developer) e Consenti endpoint XMLA e Analizza in Excel con modelli semantici locali (nelle Impostazioni Integration) sono necessari. Consenti ai principali del servizio di usare le API di Power BI (sotto Impostazioni sviluppatore) è necessario solo quando si esegue l'autenticazione con un principale del servizio. |
| Input della query |
queries[] array (una query per chiamata) |
Stringa singola query (più EVALUATE istruzioni consentite) |
| Formati di risposta | Solo JSON | Solo Freccia IPC |
| Parametri aggiuntivi | Limitato |
queryTimeout, resultsetRowcountLimit, schemaOnly, , executionMetrics, memoryLimit |
| Streaming | Non trasmesso | Flusso continuo end-to-end (trasferimento a blocchi) |
| Limiti delle dimensioni dei risultati | Limite rigido di 100.000 righe e 1.000.000 valori per ciascuna query. | Nessun limite fisso di righe o valori (usa resultsetRowcountLimit per imporre un limite se necessario) |
| Paginazione | Non supportato | Non supportato: uso TOPN o resultsetRowcountLimit per risultati di grandi dimensioni |
| Libreria di frecce obbligatoria | No (solo JSON) | Sì: per deserializzare la risposta è necessaria una libreria di frecce, ad esempio pyarrow o Apache.Arrow. |
Contenuti correlati
- Inizia con l'API REST Esegui Query DAX
- Esercitazione: Creare un servizio di esecuzione di query DAX di livello intermedio
- Tutorial: estrazione di grandi volumi con Python per data science
- Procedure consigliate per l'API REST Esegui query DAX
- Informazioni di riferimento sulle API REST Per l'esecuzione di query DAX
- API REST di Power BI