Datasets - Execute Dax Queries
Exécute des requêtes DAX (Data Analysis Expressions) sur le jeu de données fourni. Le jeu de données doit résider dans Mon espace de travail. La réponse est retournée au format Apache Arrow.
Les autorisations ou les erreurs de requête entraînent :
- Erreur de réponse, telle que
XMLA endpoint feature is disabled. Turn on the tenant setting 'Allow XMLA endpoints and Analyze in Excel with on-premises semantic models' to enable this feature.. - Code d’état HTTP réussi (200) avec un lot d’enregistrements contenant les détails de l’erreur.
Permissions
Le paramètre de locataire 'API REST d’exécution de jeux de données, trouvé sous paramètres d’intégration, doit être activé.
L’utilisateur doit disposer d’autorisations de lecture et de génération de jeu de données. Pour plus d’informations, consultez Gérer les autorisations d’accès au jeu de données.
Étendue requise
Dataset.ReadWrite.All ou Dataset.Read.All
Limitations
- Cette API est prise en charge uniquement par les modèles sémantiques compatibles avec l’infrastructure service Power BI moderne. Les catégories non prises en charge sont les suivantes :
- Modèles sémantiques dans l’espace de travail de supervision d’administration et les modèles de métriques d’utilisation.
- Modèles sémantiques qui utilisent toujours le niveau de compatibilité 1103.
- Modèles sémantiques qui utilisent des fonctionnalités déconseillées telles que des modèles sémantiques Push, des modèles créés dans le service Power BI à partir de fichiers CSV ou de packs de contenu.
- Les jeux de données hébergés dans Azure Analysis Services ou qui ont une connexion active à un modèle Azure Analysis Services local ne sont pas pris en charge.
- Limitations de requête :
- Une requête par appel d’API, mais la requête peut avoir plusieurs instructions d’évaluation.
- Les limites suivantes s’appliquent quel que soit le modèle sémantique interrogé :
- La limite globale est de 120 requêtes par minute par utilisateur.
- Power BI Pro et Premium par utilisateur (PPU) sont limités à 40 requêtes par minute par utilisateur.
- Seules les requêtes DAX et les fonctions INFO sont prises en charge pour l’instant. Les requêtes MDX et DMV ne sont pas prises en charge.
- Limitations du principal de service et de l’emprunt d’identité :
- Pour utiliser des principaux de service, vérifiez que le paramètre client administrateur Autoriser les principaux de service à utiliser les API Power BI sous paramètres du développeur est activé. Pour plus d’informations sur les modèles sémantiques avec RLS, reportez-vous aux limitations RLS.
- La
effectiveUsernamepropriété ne peut être utilisée que par les utilisateurs qui sont administrateurs de l’espace de travail qui contient le modèle sémantique. - La
rolespropriété peut être utilisée par les utilisateurs uniquement lorsqu’ils sont membres du rôle ou administrateurs spécifiés de l’espace de travail qui contient le modèle sémantique. - Les principaux de service ne peuvent pas être des membres de rôle. Un principal de service ne peut utiliser
rolesque lorsqu’il s’agit d’un administrateur de l’espace de travail qui contient le modèle sémantique.
Format de réponse
Le corps de la réponse contient un ou plusieurs flux IPC Apache Arrow concaténés. Chaque flux est autonome avec son propre schéma et ses propres lots d’enregistrements. Pour traiter la réponse, utilisez une bibliothèque de client Apache Arrow .
La réponse peut inclure les types d’ensembles de lignes suivants, identifiés par les métadonnées au niveau du schéma (paires clé-valeur sur le schéma de flèche) :
- Jeu de lignes de données : contient les résultats de la requête. Aucune clé de métadonnées spéciale. Les noms et types de colonnes sont déterminés par la requête DAX.
-
Ensemble de lignes d’erreur : identifié par
IsError=truedans les métadonnées du schéma. Contient des colonnes :ErrorCode, ,ErrorMessageErrorDescriptionet des champs d’emplacement source. Les métadonnées de schéma incluentFaultCodeégalement (code d’erreur hexadécimal) etFaultString(message d’erreur).
Les lots d’enregistrement dans la réponse utilisent LZ4_FRAME compression. La bibliothèque pyarrow gère cela automatiquement. Pour .NET, installez le package NuGet Apache.Arrow.Compression.
Important
Les erreurs de requête retournent HTTP 200 avec un ensemble de lignes d’erreur dans le flux de flèches. Vérifiez toujours les métadonnées de schéma pour IsError obtenir des codes d’état HTTP réussis.
L’exemple de Python suivant montre comment lire des données et rechercher des erreurs à l’aide de pyarrow :
import io
import pyarrow as pa
# response = requests.post(url, headers=headers, json=request_body)
stream = io.BytesIO(response.content)
results = []
while stream.tell() < len(response.content):
try:
reader = pa.ipc.open_stream(stream)
table = reader.read_all()
metadata = {
k.decode(): v.decode()
for k, v in (reader.schema.metadata or {}).items()
}
if metadata.get("IsError") == "true":
raise RuntimeError(
f"Query error [{metadata.get('FaultCode')}]: "
f"{metadata.get('FaultString')}"
)
else:
results.append(table)
except pa.ArrowInvalid:
break
print(results[0].to_pandas())
Pour .NET, utilisez la classe DaxQueryArrowResponseReader dans ce Kit de développement logiciel (SDK), qui gère l’analyse de flux, la détection des erreurs et la décompression LZ4.
POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/executeDaxQueries
Paramètres URI
| Nom | Dans | Obligatoire | Type | Description |
|---|---|---|---|---|
|
dataset
|
path | True |
string (uuid) |
ID du jeu de données |
Corps de la demande
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
| query | True |
string |
Texte de requête. |
| applicationContext |
string |
Structure JSON contenant des informations supplémentaires sur une opération. |
|
| culture |
string |
Code de culture qui contrôle la mise en forme de requête spécifique aux paramètres régionaux, par |
|
| customData |
string |
Données personnalisées à utiliser dans dynamic RLS. Par exemple, |
|
| effectiveUsername |
string |
Nom d’utilisateur effectif de la requête. |
|
| memoryLimit |
integer (int64) |
Limite de mémoire (en Ko) pour la requête. |
|
| queryTimeout |
integer |
Délai d’expiration de la requête en secondes. |
|
| resultSetRowCountLimit |
integer |
Nombre maximal de lignes à retourner. La valeur par défaut est de 1 000 000 lignes. |
|
| roles |
string[] |
Rôles attribués à l’utilisateur. |
|
| schemaOnly |
boolean |
Indique si la requête doit retourner uniquement le schéma. |
Réponses
| Nom | Type | Description |
|---|---|---|
| 200 OK |
string |
Requête exécutée avec succès. Retourne des données binaires au format Apache Arrow. Media Types: "application/vnd.apache.arrow.stream" |
Exemples
| Execute query with culture |
| Execute query with custom data |
| Execute query with effective username |
| Execute simple DAX query |
Execute query with culture
Exemple de requête
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE ROW(\"Formatted Date\", FORMAT(DATE(2024, 12, 31), \"Long Date\"))",
"culture": "en-US"
}
Exemple de réponse
Execute query with custom data
Exemple de requête
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE FILTER('Sales', 'Sales'[Region] = CUSTOMDATA())",
"customData": "North America"
}
Exemple de réponse
Execute query with effective username
Exemple de requête
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE SUMMARIZECOLUMNS('Sales'[Region], \"Total\", SUM('Sales'[Amount]))",
"effectiveUsername": "user@contoso.com",
"roles": [
"SalesRole"
],
"queryTimeout": 300
}
Exemple de réponse
Execute simple DAX query
Exemple de requête
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE VALUES('Product'[Category])",
"queryTimeout": 600,
"schemaOnly": false,
"resultSetRowCountLimit": 100000
}
Exemple de réponse
Définitions
DatasetExecuteDaxQueriesRequest
Demande d’exécution de requêtes sur un jeu de données
| Nom | Type | Description |
|---|---|---|
| applicationContext |
string |
Structure JSON contenant des informations supplémentaires sur une opération. |
| culture |
string |
Code de culture qui contrôle la mise en forme de requête spécifique aux paramètres régionaux, par |
| customData |
string |
Données personnalisées à utiliser dans dynamic RLS. Par exemple, |
| effectiveUsername |
string |
Nom d’utilisateur effectif de la requête. |
| memoryLimit |
integer (int64) |
Limite de mémoire (en Ko) pour la requête. |
| query |
string |
Texte de requête. |
| queryTimeout |
integer |
Délai d’expiration de la requête en secondes. |
| resultSetRowCountLimit |
integer |
Nombre maximal de lignes à retourner. La valeur par défaut est de 1 000 000 lignes. |
| roles |
string[] |
Rôles attribués à l’utilisateur. |
| schemaOnly |
boolean |
Indique si la requête doit retourner uniquement le schéma. |