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.
Le dax_request plug-in exécute une requête DAX (Data Analysis Expressions) sur un modèle sémantique Power BI et retourne les résultats sous forme de table. Traitez la table retournée avec des opérateurs KQL (Kusto Query Language) standard. Appelez le plug-in avec l’opérateur evaluate.
Le plug-in utilise l’API Exécuter des requêtes DAX Power BI, qui retourne des résultats au format Apache Arrow. Le plug-in conserve les types de colonnes pris en charge lorsqu’il convertit la réponse en table KQL.
Note
Le dax_request plug-in est en préversion.
Prerequisites
- Le modèle sémantique doit se trouver dans un espace de travail affecté à une capacité Fabric ou Power BI Premium.
- L’API REST d’exécution de jeu de données,autoriser les points de terminaison XMLA et analyser dans Excel avec les paramètres de locataire des modèles sémantiques locaux doit être activé.
- Vous devez disposer d’autorisations de génération et de lecture sur le modèle sémantique.
- La stratégie de légende de cluster doit autoriser
daxles légendes à .api.powerbi.comPour modifier cette stratégie, vous avez besoinAllDatabasesAdminouOpsautorisations.
Syntaxe
evaluate
dax_request
(
ConnectionString,DaxQuery) [:OutputSchema]
En savoir plus sur les conventions de syntaxe dans les conventions de syntaxe pour la documentation de référence.
Parameters
| Nom | Type | Required | Description |
|---|---|---|---|
| ConnectionString | string |
Oui | URL du modèle sémantique suivie de ;Impersonate. Pour connaître les formats d’URL pris en charge, consultez chaîne de connexion. |
| DaxQuery | string |
Oui | Requête DAX à exécuter sur le modèle sémantique. |
| OutputSchema | - | - | Noms et types des colonnes de sortie attendues. Utilisez la syntaxe (ColumnName:ColumnType [, ...]). |
Note
La spécification de OutputSchema est recommandée. Il permet à Kusto de déterminer les colonnes et types de sortie du plug-in sans envoyer la requête DAX à Power BI pendant la découverte du schéma. La requête Power BI est plutôt différée à l’exécution de la requête, en même temps que le reste de la requête KQL. Le plug-in retourne une erreur si le schéma retourné n’est pas compatible avec le schéma déclaré.
Chaîne de connexion
Le chaîne de connexion se compose de l’URL du modèle sémantique et de la ;Impersonate directive d’authentification. Utilisez l'un des éléments suivants :
Modèle sémantique dans un espace de travail :
https://api.powerbi.com/v1.0/myorg/groups/WorkspaceId/datasets/SemanticModelId;ImpersonateModèle sémantique dans mon espace de travail :
https://api.powerbi.com/v1.0/myorg/datasets/SemanticModelId;Impersonate
Le segment de myorg chemin est littéral.
*WorkspaceId* et *SemanticModelId* doit être des identificateurs globaux uniques (GUID). N’incluez pas de chaîne de requête, de fragment ou de chemin de fin après SemanticModelId.
Authentification et autorisation
Le plug-in utilise Microsoft Entra l’authentification au nom de l’utilisateur. Le moteur obtient un jeton pour l’utilisateur demandeur et envoie la requête DAX dans le contexte de sécurité de cet utilisateur. L’utilisateur doit disposer d’autorisations de génération et de lecture sur le modèle sémantique. Toute sécurité au niveau des lignes ou sécurité au niveau de l’objet configurée pour l’utilisateur s’applique à la requête.
Utilisez ;Impersonate comme directive d’authentification. L’identité managée, le principal de service et l’authentification par clé d’application ne sont pas pris en charge.
Important
Utilisez un littéral de chaîne obfusqué pour toute chaîne qui contient des informations confidentielles. Les valeurs obfuscatées n’apparaissent pas dans le suivi Kusto.
Configurer et définir la stratégie de légende
Le plug-in effectue un appel externe à Power BI. Étant donné que la stratégie de légende par défaut bloque dax les légendes, un administrateur de cluster doit autoriser explicitement le point de terminaison Power BI.
La commande suivante fusionne une règle restrictive dax dans la stratégie de légende de cluster existante :
.alter-merge cluster policy callout @'[{
"CalloutType": "dax",
"CalloutUriRegex": "api\\.powerbi\\.com.*",
"CanCall": true
}]'
Vérifiez la stratégie :
.show cluster policy callout
Returns
Le plug-in retourne le résultat de la requête DAX sous la forme d’une table KQL. Il conserve les types de données Flèche pris en charge. Par exemple, Flèche int64, double, utf8et date-time valeurs mappent à Kusto long, stringreal, et datetime, respectivement.
Power BI retourne des noms de colonnes entre crochets, tels que [Category]. Dans KQL, référencez ces noms avec la ['...'] syntaxe, par ['[Category]']exemple .
Warning
Le plug-in utilise la limite de ligne par défaut de l’API Exécuter des requêtes DAX (resultSetRowCountLimitPower BI). Si la requête DAX génère plus de lignes que cette limite, la table retournée peut être incomplète sans erreur. Filtrez ou agrégez des données dans la requête DAX pour conserver le résultat dans la limite. Le filtrage ou l’agrégation par la suite dans KQL ne récupère pas les lignes omises.
Examples
Retourner toutes les lignes d’une table
L’exemple suivant interroge la Sales table. Le résultat retourné est soumis à la limite de ligne par défaut de l’API.
evaluate dax_request(
'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
'EVALUATE Sales')
Traiter les résultats DAX avec Kusto
L’exemple suivant sélectionne deux colonnes dans DAX, récapitule le résultat en KQL et filtre par catégorie :
evaluate dax_request(
'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
'EVALUATE SELECTCOLUMNS(Sales, "Category", Sales[Category], "Amount", Sales[Amount])')
| summarize TotalAmount = sum(['[Amount]']) by ['[Category]']
| where ['[Category]'] == 'Electronics'
Astuce
Filtrez et agrégez les données dans DAX si possible pour réduire la quantité de données retournées à Kusto.
Spécifier un schéma de sortie
L’exemple suivant déclare le schéma de sortie attendu afin que Kusto puisse déterminer le schéma sans contacter Power BI pendant l’analyse des requêtes. Le schéma déclaré doit correspondre au schéma de résultat en direct.
evaluate dax_request(
'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
'EVALUATE ROW("cnt", COUNTROWS(Sales), "sumAmt", SUM(Sales[Amount]))')
: (['[cnt]']:long, ['[sumAmt]']:real)
Troubleshooting
| Error | Cause et résolution |
|---|---|
| Chaîne de connexion non valide | Vérifiez que l’URL utilise un format pris en charge, l’espace de travail et les ID de modèle sémantique sont des GUID valides, et la chaîne se termine par ;Impersonate. |
| La légende n’est pas autorisée | Configurez la stratégie de légende de cluster pour autoriser dax les appels à api.powerbi.com. |
| Erreur d’authentification ou d’autorisation | Vérifiez que les paramètres de locataire requis sont activés et que l’utilisateur demandeur dispose de l’autorisation Générer et Lire sur le modèle sémantique. |
| Erreur de requête HTTP | Vérifiez service Power BI disponibilité, l’accessibilité des points de terminaison et l’URL du modèle sémantique. |