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 effectiveUsername proprié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 roles proprié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 roles que 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 = true dans les métadonnées du schéma. Contient des colonnes : ErrorCode, , ErrorMessageErrorDescriptionet des champs d’emplacement source. Les métadonnées de schéma incluent FaultCode également (code d’erreur hexadécimal) et FaultString (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
datasetId
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 en-USexemple . Pour plus d’informations sur les codes de culture pris en charge, consultez Langues et pays/régions pris en charge pour Power BI.

customData

string

Données personnalisées à utiliser dans dynamic RLS. Par exemple, North America vous pouvez référencer la fonction du CUSTOMDATA() modèle.

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 en-USexemple . Pour plus d’informations sur les codes de culture pris en charge, consultez Langues et pays/régions pris en charge pour Power BI.

customData

string

Données personnalisées à utiliser dans dynamic RLS. Par exemple, North America vous pouvez référencer la fonction du CUSTOMDATA() modèle.

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.