Intégrer un rapport Power BI dans un formulaire principal d’application pilotée par modèle

Important

Il existe une meilleure façon d’ajouter un rapport Power BI à un formulaire d’application pilotée par modèle. Pour plus d’informations, voir : Utiliser le contrôle de rapport Power BI pour ajouter un rapport

Vous pouvez utiliser des rapports Power BI dans des applications pilotées par modèle Power Apps pour apporter des rapports et des analyses enrichis à vos formulaires principaux et permettre à vos utilisateurs d’en faire plus. Cela permet d’exploiter pleinement le regroupement des données entre différents systèmes, et de les personnaliser dans le contexte d’un enregistrement unique.  

Configuration requise

L’intégration du contenu Power BI est une fonctionnalité optionnelle qui est désactivé sur tous les environnements par défaut. Avant de pouvoir intégrer du contenu Power BI, vous devez l’activer. Informations complémentaires : Activation des visualisations Power BI dans l’organisation.

Cette fonctionnalité requiert l’exportation d’une solution, la modification de celle-ci pour ajouter l’extrait de code xml, puis sa réimportation dans l’environnement. Assurez-vous d’importer les modifications dans votre environnement cible via une solution gérée uniquement. Voir Solutions d’importation, de mise à jour et d’exportation pour des instructions pas à pas pour installer une mise à jour sur une solution gérée existante.

Intégrer sans filtrage contextuel

Vous pouvez utiliser les rapports Power BI en les intégrant afin d’obtenir exactement le même rapport. Cela ne requiert pas de les placer dans un contexte du formulaire basé sur le modèle actuel et, par conséquent, vous obtenez le même rapport ou vignette sur tous les enregistrements de la table. Par exemple, le rapport suivant illustre la situation géographique de tous les comptes simultanément, et est utile pour indiquer les informations résumées.

Rapport Power BI intégré sans filtrage contextuel.

Vous pouvez personnaliser un nœud sections XML de formulaire principal afin qu’il puisse héberger un rapport Power BI intégré et une vignette en procédant comme suit :

  1. Dans votre environnement de développement, créez une solution et ajoutez la table qui contient le formulaire principal où vous souhaitez intégrer le rapport Power BI intégré à afficher.

    • Si la table existe déjà dans l’environnement cible où vous importez la solution, choisissez l’option Sélectionner des composants lorsque vous ajoutez la table à la solution. Ensuite, ajoutez simplement le formulaire principal de la table.
    • Si la table n’existe pas dans l’environnement cible où vous importez la solution, choisissez Inclure tous les composants lorsque vous ajoutez la table à la solution.
  2. Exportez la solution comme gérée.

  3. Extrayez tous les fichiers du fichier zip du package de solution. Ensuite, modifiez le fichier customizations.xml et ajoutez le code XML fourni ci-dessous dans le bloc <sections> qui est à l’intérieur du nœud <forms type="main"> dans le fichier customizations.xml.

<section id="{d411658c-7450-e1e3-bc80-07021a04bcc2}" locklevel="0" showlabel="true" IsUserDefined="0" name="tab_4_section_1" labelwidth="115" columns="1" layout="varwidth" showbar="false">
    <labels>
        <label languagecode="1033" description="Unfiltered Power BI embedding demo"/>
    </labels>
    <rows>
        <row>
            <cell id="{7d18b61c-c588-136c-aee7-03e5e74a09a1}" showlabel="true" rowspan="20" colspan="1" auto="false" solutionaction="Added">
                <labels>
                    <label languagecode="1033" description="Accounts (Parent Account)"/>
                </labels>
                <control id="unfilteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
                    <parameters>
                        <PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
                        <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
                        <TileUrl>https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
                    </parameters>
                </control>
            </cell>
        </row>
        <row/>
    </rows>
</section>

Important

Assurez-vous d’utiliser le contrôle classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}" comme indiqué dans l’exemple XML.

  1. Apportez les modifications suivantes au formulaire XML que vous avez copié dans le fichier customizations.xml pour votre rapport Power BI. Ce tableau décrit les valeurs que vous devez remplacer par les éléments dans l’exemple XML précédent.
Property Description
PowerBIGroupId L’ID de l’espace de travail Power BI. Si votre rapport est dans Mon espace de travail,** alors l’ID de l’espace de travail est 00000000-0000-0000-0000-000000000000. Sinon, ajoutez l’ID de l’espace de travail. Vous trouverez l’ID de l’espace de travail dans l’URL de service Power BI. Plus d’informations : Rechercher les identifiants de l’espace de travail Power BI et de rapport.
PowerBIReportId L’ID de rapport Power BI. Remplacez-le par le rapport que vous voulez intégrer. Vous trouverez l’ID de votre rapport dans l’URL de service Power BI. Plus d’informations : Rechercher les identifiants de l’espace de travail Power BI et de rapport
TileUrl URL du rapport Power BI que vous souhaitez intégrer. Assurez-vous d’utiliser le nom de sous-domaine Power BI (remplacez app.powerbi.com par le vôtre) et l’ID du rapport corrects (remplacez reportId=544c4162-6773-4944-900c-abfd075f6081 par le vôtre). Par exemple, https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081
solutionaction="Added" Si la table existe déjà dans l’environnement cible, laissez le paramètre solutionaction=Added pour l’élément de cellule tel que fourni dans l’exemple XML. Si la table n’existe pas dans l’environnement cible, supprimez le paramètre solutionaction=Added.
  1. Créez un fichier zip à partir de tous les fichiers de solution précédemment extraits. Ensuite, importez la solution dans l’environnement cible.

Intégrer avec filtrage contextuel

Vous pouvez rendre les rapports et vignettes Power BI plus significatifs en appliquant des filtres contextuels au formulaire basé sur le modèle actuel, de sorte que le rapport ou la vignette soient filtrés selon les attributs de la ligne actuelle. Par exemple, le rapport suivant illustre la situation géographique d’un compte, en filtrant le rapport Power BI avec le nom du compte. Cela permet un rapport unique pour afficher des informations contextualisées pour toutes les lignes de la table.

Rapport Power BI intégré avec filtrage contextuel.

Le filtrage est possible en ajoutant l’élément <PowerBIFilter> au bloc <parameter> comme illustré ci-dessous. Vous pouvez utiliser n’importe quel attribut de la table du formulaire pour créer l’expression de filtre. Informations complémentaires : Construction de filtres pour comprendre comment créer vos propres filtres.

<control id="filteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
    <parameters>
        <PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
        <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
        <TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
        <PowerBIFilter>{"Filter": "[{\"$schema\":\"basic\",\"target\":{\"table\":\"table_name_of_power_bi_dataset\",\"column\":\"power_bi_field\"},\"operator\":\"In\",\"values\":[$a],\"filterType\":1}]", "Alias": {"$a": "field_name_in_powerapps_to_filter"}}</PowerBIFilter>
    </parameters>
</control>

Notez que cette opération utilise le même contrôle que l’intégration de rapport non filtré, par conséquent l’ID de classe de contrôle reste inchangée.

Ce tableau décrit toutes les propriétés supplémentaires utilisées dans l’exemple XML précédent.

Propriété Description
PowerBIFilter L’expression de filtre qui met dans un contexte le rapport Power BI en transmettant les attributs du formulaire en tant que paramètres. Pour le rendre plus accessible en lecture, celui-ci est construit comme indiqué ci-dessous. L’expression de filtre ne peut pas être une liste de valeurs séparées par des virgules.
    {
            "Filter": "[{
                    \"$schema\":\"basic\",
                    \"target\":{
                            \"table\":\"table_name_of_power_bi_dataset\",
                            \"column\":\"power_bi_field\"
                    },
                    \"operator\":\"In\",
                    \"values\":[$a, $b],
                    \"filterType\":1
            }]",
            "Alias": {
                    "$a": "field1_name_in_powerapps_to_filter",
                    "$b":"field2_name_in_powerapps_to_filter"
            }
    }

La partie cible de l’expression précédente identifie la table et la colonne auxquelles appliquer des filtres. L’opérateur identifie la logique et les valeurs identifient les données transmises depuis l’application basée sur une modèle Power Apps. Pour paramétrer de manière générique, les valeurs sont construites à l’aide d’alias. Dans l’expression précédente, les valeurs firstname et lastname d’un compte sont transmises, et chacune est recherchée dans la colonne Nom du compte du rapport Power BI. Notez que firstname et lastname sont des noms d’attributs uniques de la table Compte, dont la valeur est transmise ici.

Vous pouvez créer des expressions de filtres plus complexes en regardant des exemples dans Construction de filtres et en fournissant des valeurs appropriées à $schema et à filterType. Assurez-vous d’échapper chaque littéral dans la partie du filtre en utilisant ", de sorte que le JSON soit généré correctement.

Supprimer l’attribut non modifié avant l’importation

Avant d’importer la solution dans l’environnement cible, assurez-vous que l’attribut non modifié n’est pas inclus dans la section formXml du fichier customizations.xml. Si l’attribut non modifié est présent dans le XML qui inclut le XML du contrôle Power BI, supprimez l’attribut avant d’importer la solution dans l’environnement cible. Par exemple, remplacez <systemform unmodified="1"> par <systemform>.

Rechercher les identifiants de l’espace de travail Power BI et de rapport

  1. L’ID d’espace de travail pour cet exemple est efc85277-2bdb-47bc-9762-363f64335108.
  2. L’ID de rapport pour cet exemple est 643ab643-7126-4a57-bd82-ca8f1fb676fc. Exemple d’identifiant d’espace de travail Power BI et identifiant de rapport

Problèmes connus et limitations

  • Cette intégration est disponible uniquement dans le client Unified Interface, sur les navigateurs web et les appareils mobiles pris en charge.

  • L’ouverture de ce formulaire dans le concepteur de formulaires Power Apps n’affichera pas le contrôle de manière significative. Cela est dû au fait que le contrôle est personnalisé en dehors du concepteur de formulaires.

  • Les utilisateurs seront authentifiés dans Power BI automatiquement avec leur nom d’utilisateur et leur mot de passe Power Apps. Si un compte Power BI avec des informations d’identification correspondantes n’existe pas, une invite de connexion apparaît comme décrit ici.

    Invite de connexion Power BI.

    Aucune donnée ne s’affichera si un compte non valide est utilisé pour se connecter à Power BI. Pour vous connecter avec des informations d’identification correctes, déconnectez-vous et reconnectez-vous.

    Connectez-vous au service Power BI.

    L’utilisateur connecté n’a pas l’autorisation appropriée.

  • La vue des données du rapport affichées dans Power Apps est la même que dans Power BI, et les privilèges et rôles de sécurité Power Apps n’affectent pas les données affichées. Par conséquent, les données sont essentiellement identiques à ce que le créateur du jeu de données Power BI verrait. Pour appliquer des restrictions d’accès aux données semblables aux rôles et équipes de sécurité Power Apps, utilisez Sécurité au niveau de la ligne avec Power BI.

  • Si le formulaire n'affiche pas le rapport Power BI après l'importation de la solution et une fois les personnalisations publiées, ouvrez-le dans l'éditeur de formulaires basé sur des modèles et enregistrez-le, de sorte que le formulaire JSON soit généré à nouveau.

  • L’incorporation d’une vignette Power BI dans un formulaire est uniquement prise en charge sans filtrage contextuel.

  • L’intégration d’un rapport Power BI ne prend pas en charge les références entre clients. Par exemple, la tentative d’incorporation d’un rapport Power BI appartenant au client Contoso dans une application pilotée par modèle appartenant au client Fabrikam n’est pas actuellement prise en charge, même si le rapport incorporé a été partagé avec des utilisateurs dans le client Fabrikam via Power BI.

Problèmes courants

  • L’ID de groupe n’est pas spécifié dans le nœud TileUrl des paramètres de contrôle lorsqu’il peut être nécessaire. Cet exemple inclut un ID de groupe.
<parameters>
    <PowerBIGroupId>fd266a4c-9a02-4553-9310-80e05ee844f3</PowerBIGroupId>
    <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
    <TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081&amp;groupId=fd266a4c-9a02-4553-9310-80e05ee844f3</TileUrl>
</parameters>
  • Les champs ont différents types de données dans Power BI et Dataverse. Ils doivent être du même type, comme une chaîne dans Power BI et une chaîne dans Dataverse.
  • Les champs de chaîne n’ont pas de guillemets d’échappement dans le filtre Power BI. Remarquez que values possède [\"$a\"] plutôt que [$a].
    {
            "Filter": "[{
                    \"$schema\":\"basic\",
                    \"target\":{
                            \"table\":\"table_name_of_power_bi_dataset\",
                            \"column\":\"power_bi_field\"
                    },
                    \"operator\":\"In\",
                    \"values\":[\"$a\"],
                    \"filterType\":1
            }]",
            "Alias": {
                    "$a": "field_name_in_powerapps_to_filter",
            }
    }

Voir aussi

Intégrer un tableau de bord Power BI à un tableau de bord personnel piloté par modèle Power Apps

Utiliser Power BI avec les applications Dynamics 365

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).