Travailler avec Power BI Matrix en prenant des données à partir de l'instruction DAX

Aug 15 2020

J'ai les exigences suivantes :

  • L'utilisateur verra une matrice Power BI sur une page Web (par opposition à Power BI Desktop).
  • La page Web doit comporter trois éléments : un champ de texte, un bouton et la matrice Power BI (potentiellement incluse dans un rapport Power BI).
  • L'utilisateur entrera l'instruction DAX dans le champ de texte et cliquera sur le bouton pour ordonner à la matrice de prendre l'instruction DAX, de l'exécuter et de remplir les données.
  • L'utilisateur doit être en mesure d'explorer la matrice.
  • L'utilisateur peut ressaisir une nouvelle instruction DAX, actualisant la matrice.

Maintenant, toute la documentation que j'ai pu trouver, par exemple ici , parle de la matrice dans Power BI Desktop (c'est-à-dire pas de page Web) et des données prises en sélectionnant manuellement des tables/colonnes/mesures (sur le côté droit de l'écran).

Dans Power BI Studio, je sais que je peux saisir une instruction DAX en créant un tableau dans la barre supérieure, par exemple si j'ai le DAX :

 EVALUATE TOPN (3, branches)

Je pourrais créer une table pour remplir la matrice avec :

BranchesTable = TOPN (3, branches)

Mais comment lier dynamiquement une déclaration DAX définie au moment de l'exécution à une matrice sur une page Web ?

Réponses

1 vvvv4d Aug 15 2020 at 21:20

Ce n'est actuellement pas possible de faire exactement ce que vous voulez. Vous pouvez modifier dynamiquement une source de données et mettre à jour la requête utilisée dans un rapport spécifique, mais aucune API n'est disponible (PowerBI REST ou PowerBI JavaScript) pour mettre à jour les colonnes figurant sur un visuel dans un rapport. Vous pouvez vous rapprocher de ce que vous voulez, mais le rapport ne peut pas être affiché en Viewmode et il devra être affiché en Editmode afin que l'utilisateur ait la possibilité de faire glisser manuellement les champs générés à partir de leurs résultats de requête DAX mis à jour sur le visuel Matrix si ils soumettent un changement.

En supposant que vous ayez déjà terminé l'installation et la configuration prérequises de l'enregistrement de l'application et que vous soyez prêt à intégrer, voici quelques étapes pour vous rapprocher de ce que vous recherchez. Si vous n'êtes pas prêt à intégrer, il y a de la documentation sous les 8 étapes que j'ai fournies pour compléter la configuration prérequise pour pouvoir intégrer.

  1. Utilisation de PowerBI Desktop Créez un modèle de rapport doté d'un visuel matriciel et d'une connexion à la source de données que vous souhaitez utiliser. Assurez-vous de configurer ce rapport à l'aide d'une requête spécifique et NON de toutes les tables de la source de données, qu'il s'agisse de SQL ou de SSAS. (Vous spécifiez la requête sous les options avancées lors de la configuration initiale de la source de données dans le rapport)
  2. Configurer une passerelle de données Power BI sur la source de données utilisée par votre rapport
  3. Créez un espace de travail sur PowerBI.com pour télécharger le rapport sur
  4. Utilisation du bureau PowerBI Publiez le rapport que vous avez créé à l'étape 1 dans l'espace de travail que vous avez créé à l'étape 3
  5. Sur votre application Web, lorsqu'un utilisateur affiche la page du visualiseur de rapports, vous avez besoin d'un moyen d'identifier chaque utilisateur. Supposons que vous ayez un UserIdchamp qui est un identifiant unique pour chaque utilisateur. Appelez GetReports en groupehttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. Vous devez avoir un nom de rapport connu plus l'ID utilisateur. Supposons son DynamicReport. Appelez donc GetReports et vérifiez s'il DynamicReport_UserIdexiste pour l'utilisateur essayant d'afficher la page du visualiseur de rapports dans votre application Web.
  6. Dans cette API, les appels résultent de l'étape 5, si le rapport n'existe pas pour un utilisateur, utilisezhttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereportpour cloner le modèle de rapport que vous avez publié à l'étape 4.
  7. Incorporer et afficher le rapport de modèle spécifique à l'utilisateur (DynamicReport_UserId) pour l'utilisateur.
  8. Avoir une logique sur la page de la visionneuse de rapports afin que l'utilisateur puisse soumettre POSTune requête DAX. Quand ils font une soumission, ils ont une logique à utiliserhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcessur le back-end pour mettre à jour la source de données dans leur rapport, puis réintégrer le rapport avec leur instruction DAX et les données modifiées.

Le visuel ne sera pas automatiquement mis à jour vers les nouveaux champs à partir de la nouvelle requête soumise par l'utilisateur, mais les champs de données disponibles dont ils disposent en mode éditeur changeront. L'utilisateur devra faire glisser et déposer les champs de sa requête DAX sur le visuel Matrix ou tout autre type de visuel qu'il choisira d'utiliser. Vous ne pourrez pas simplement afficher un rapport en Viewmode puisque vous n'avez aucun moyen de mettre à jour par programmation les champs affichés en mode visuel. L'utilisateur peut même finir par voir un visuel cassé initialement en raison de la requête modifiée et des champs de référencement visuel de la requête précédemment utilisée. Vous pouvez utiliser l'API PowerBI Javascript pour masquer le visuel existant afin d'améliorer l'expérience utilisateur de l'utilisateur qui ne voit rien de cassé.

Faites-moi savoir si vous avez des questions spécifiques sur ces appels d'API ou sur la façon de les utiliser.

Voici où je cherchais la fonctionnalité Power BI JavaScripthttps://github.com/Microsoft/powerbi-javascript/wiki(Impossible de trouver quoi que ce soit de spécifique aux visuels matriciels. La fonctionnalité JavaScript pour les visuels génériques aux visuels et non au type visuel comme Matrix ou Card)

Voici la documentation de Microsoft sur les API REST disponibles ethttps://docs.microsoft.com/en-us/rest/api/power-bi/

Voici quelques bonnes ressources pour en savoir plus sur l'intégration

https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding

Si vous avez besoin d'une capacité d'exploration, les hiérarchies sont une excellente option

https://spreadsheeto.com/power-bi-hierarchy/