Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API Exécuter des requêtes DAX vous permet d’exécuter des requêtes DAX sur des modèles sémantiques Power BI et de récupérer des résultats par programmation au format IPC Apache Arrow, format binaire columnar conçu pour l’analytique hautes performances. En retournant des résultats de requête directement au format Flèche, l’API élimine la surcharge de sérialisation et permet à votre application d’accéder à des données fortement typées et prêtes à l’analyse.
Pourquoi flèche ?
Le point de terminaison Execute Queries existant retourne des résultats au format JSON. Le point de terminaison Execute DAX Queries le plus récent renvoie des résultats exclusivement au format IPC Apache Arrow, un format binaire colonnaire conçu pour des analyses hautes performances. Le tableau suivant compare les deux formats de réponse :
| JSON (API d’exécution des requêtes) | Flèche (Exécuter l’API Requêtes DAX) | |
|---|---|---|
| Format | JSON orienté ligne | IPC Arrow en colonnes |
| Taille de la charge utile | Plus grand (surcoût d’encodage des chaînes de caractères) | Plus petit (binaire, compressé) |
| Fidélité de type | Perte (tout est chaîne/nombre) | Sans perte (date native, décimale, int64) |
| Désérialisation | Analyse + coercition de type | Lecture sans copie dans un DataFrame |
| Idéal pour | Petites requêtes, intégrations simples | Jeux de résultats volumineux, pipelines d’analyse |
Tip
Utilisez l’API Execute DAX Queries pour toute application cliente capable de traiter des flux binaires Arrow IPC, notamment Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go et d’autres langages prenant en charge la bibliothèque Arrow. Pour les plateformes à faible code/sans code, les flux Power Automate ou d’autres solutions qui peuvent uniquement consommer JSON, continuent d’utiliser l’ANCIENNE API Exécuter des requêtes. Bien que l’API Execute Queries ne dispose pas des paramètres avancés disponibles dans les requêtes DAX (par queryTimeout exemple, et resultsetRowcountLimit), il reste le choix approprié lorsque la sortie JSON est requise.
Format IPC d’Apache Arrow
Apache Arrow définit un format de mémoire columnaire indépendant du langage qui a été largement adopté dans l’écosystème de données, ce qui en fait l’une des représentations de données les plus largement prises en charge. Le format de streaming IPC (Inter-Process Communication) d’Arrow encapsule des lots d’enregistrements colonnaires avec des métadonnées de schéma, ce qui permet :
- Lectures de copie zéro : les clients peuvent mapper la réponse directement en mémoire sans analyser ni copier des données entre des mémoires tampons.
-
Prise en charge multilingue — des bibliothèques natives existent pour Python (
pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript et d’autres encore, afin que vous puissiez exploiter les résultats dans pratiquement n’importe quel langage de programmation. - Compression efficace : la compression LZ4 réduit la taille de la charge utile.
- Conception initiale du schéma : chaque flux de flèche commence par un message de schéma qui déclare des noms de colonnes, des types et des métadonnées, afin que les clients connaissent la disposition exacte des données avant de lire des lignes.
Mappage de type DAX vers flèche
L’API Exécuter des requêtes DAX mappe les types de données DAX aux types de flèches comme suit :
| Type DAX | Type de flèche | Remarques |
|---|---|---|
| Entier (nombre entier) | int64 |
Entier direct sur 64 bits |
| Decimal | double |
Virgule flottante double précision |
| Devise (décimale fixe) | decimal128(19, 4) |
Précision à quatre décimales sans perte |
| Double | double |
Virgule flottante double précision |
| DateTime | date64 |
Millisecondes depuis l’époque Unix |
| Boolean | bool |
|
| String | utf8 |
Dictionnaire encodé par défaut pour l’efficacité |
| Binary | binary |
|
| Variant | dense_union |
Union d’int64, monnaie, bool, date64, float64, utf8 |
Quand utiliser le point de terminaison Arrow
Utilisez le point de terminaison de flèche lorsque vous procédez comme suit :
- Récupérez plus de quelques centaines de lignes à partir d’un modèle sémantique.
- Intégrez les résultats à pandas, Polars, Spark ou à d’autres outils de traitement colonnaire.
- Créez un service de niveau intermédiaire qui proxie des requêtes DAX pour les consommateurs en aval.
- Besoin de types numériques ou de dates précis sans contrainte de type manuel.
Pour des requêtes simples, petites ou des recherches ad hoc rapides où JSON est préféré, l’ANCIENNE API Exécuter les requêtes reste un choix simple.
Considérations et limites
Avant d’adopter l’API Exécuter des requêtes DAX, passez en revue les différences et contraintes suivantes par rapport à l’ANCIENNE API Exécuter des requêtes :
| API d’exécution de requêtes | Exécuter l’API requêtes DAX | |
|---|---|---|
| Point de terminaison | executeQueries |
executeDaxQueries |
| Exigence de capacité | Fonctionne sur Pro, PPU et Premium/Fabric | Capacité Premium ou Fabric uniquement |
| Paramètres du locataire | API REST d’exécution des requêtes du jeu de données (dans les paramètres du développeur) | API REST d’exécution de requêtes sur le jeu de données (sous Paramètres du développeur) et Autoriser les points de terminaison XMLA et Analyser dans Excel avec des modèles sémantiques locaux (sous Paramètres d’intégration) sont nécessaires. Autoriser les principaux de service à utiliser Power BI API (sous paramètres du développeur) n’est nécessaire que lors de l’authentification auprès d’un principal de service. |
| Entrée de requête |
queries[] array (une requête par appel) |
Chaîne unique query (plusieurs EVALUATE instructions autorisées - voir Tutoriel : Exécuter plusieurs instructions EVALUATE avec PowerShell) |
| Formats de réponse | JSON uniquement | Arrow IPC uniquement |
| Paramètres supplémentaires | Limité |
queryTimeout, , resultsetRowcountLimitschemaOnly, , executionMetricsmemoryLimit |
| Streaming | Non diffusé | Diffusion en continu de bout en bout (transfert segmenté) |
| Limites de taille des résultats | Limite stricte de 100 000 lignes et de 1 000 000 valeurs par requête | Aucune limite de ligne ou de valeur fixe (utilisez resultsetRowcountLimit pour limiter si nécessaire) |
| Pagination | Non pris en charge | Non pris en charge — utilisez TOPN ou resultsetRowcountLimit pour les résultats de grande taille |
| Bibliothèque de flèches requise | Non (JSON uniquement) | Oui : une bibliothèque de flèches (par exemple pyarrow ou Apache.Arrow) est nécessaire pour désérialiser la réponse |
Contenu connexe
- Commencer avec l'API REST pour exécuter des requêtes DAX
- Tutoriel : Créer un service d’exécution de requête DAX de niveau intermédiaire
- Tutoriel : Exécuter plusieurs instructions EVALUATE avec PowerShell
- Tutorial : extraction de Python de volume élevé pour la science des données
- Meilleures pratiques pour l'exécution des requêtes DAX de l'API REST
- Informations de référence sur l’API REST d’exécution des requêtes DAX
- API REST Power BI