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

Vous pouvez utiliser Power BI rapports dans Power Apps applications basées sur des modèles pour apporter des rapports et des analyses enrichis à vos principaux formulaires et permettre à vos utilisateurs d’accomplir davantage. 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.

Prerequisites

L’incorporation de contenu Power BI est une fonctionnalité facultative et est désactivée sur tous les environnements par défaut. Vous devez l’activer avant de pouvoir incorporer Power BI contenu. Plus d’informations : Activer les visualisations Power BI dans l'organisation.

Cette fonctionnalité nécessite d’exporter une solution, de la modifier pour remplacer l’extrait de code XML, puis de la réimporter dans l’environnement. Assurez-vous d’importer les modifications dans votre environnement de développement via une solution non gérée uniquement. Accédez à Importer, mettre à jour et exporter des solutions pour obtenir des instructions sur l’installation d’une mise à jour dans une solution non gérée existante.

Intégrer sans filtrage contextuel

Vous pouvez utiliser les rapports Power BI en les incorporant et obtenir ainsi exactement le même rapport. Cela n'implique pas de les contextualiser selon la forme actuelle basée sur un modèle, et par conséquent, vous obtenez le même rapport 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.

Embedded Power BI rapport sans filtrage contextuel.

Vous pouvez personnaliser un nœud XML de formulaire principal controls afin qu’il puisse héberger un rapport et une vignette incorporés Power BI 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 dans lequel vous souhaitez que le rapport incorporé Power BI s’affiche. Choisissez l’option Sélectionner des composants lorsque vous ajoutez la table à la solution. Ensuite, ajoutez simplement le formulaire principal de la table.

  2. Modifiez le formulaire principal de la table dans votre solution et ajoutez un sous-réseau d'espace réservé dans lequel vous souhaitez incorporer votre rapport Power BI.

    • Mettez à jour l’étiquette et le nom de votre sous-grille dans le concepteur de formulaires.

    Power BI espace réservé intégré

  3. Exportez la solution en tant que solution non gérée et extrayez tous les fichiers du fichier zip du package de solution. Ensuite, modifiez le fichier customizations.xml et recherchez le nom de votre sous-grille. Remplacez le code XML fourni dans le bloc <control> dans le fichier customizations.xml. Le nœud rowspan dans le nœud cell parent peut être ajusté pour modifier la taille du rapport de Power BI incorporé.

    <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>
    

    Important

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

    • Apportez les modifications suivantes au format XML que vous avez copié dans le fichier customizations.xml de 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.
    Propriété Description
    PowerBIGroupId ID de l’espace de travail Power BI. Si votre rapport se trouve 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 service Power BI. Plus d’informations : Trouvez l’espace de travail Power BI et les identifiants de rapport.
    PowerBIReportId 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 : Trouver l’espace de travail Power BI et les ID de rapport
    TileUrl URL de rapport Power BI que vous souhaitez incorporer. Veillez à utiliser le nom de sous-domaine de Power BI correct (vous devrez peut-être remplacer app.powerbi.com par votre propre) et l’ID de rapport (remplacer reportId=544c4162-6773-4944-900c-abfd075f6081 par votre propre). Par exemple : https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081.
  4. Créez un fichier zip à partir de tous les fichiers de solution précédemment extraits. Ensuite, importez la solution dans l’environnement de développement.

Intégrer avec filtrage contextuel

Vous pouvez rendre Power BI rapports plus explicites en appliquant des filtres contextuels au formulaire basé sur le modèle actuel, afin que le rapport soit filtré en fonction des attributs de la ligne actuelle. Par exemple, le rapport suivant montre l’emplacement géographique d’un compte en filtrant le rapport Power BI à l’aide du 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 Expression de filtre qui contextualise le rapport Power BI en passant les attributs de formulaire en tant que paramètres. Pour le rendre plus lisible, le filtre est construit comme montré ici. 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 à partir de l’application pilotée par des modèles 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, la valeur du firstname et lastname est passée, et l'un des deux est recherché dans la colonne Account Name dans le 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 ", afin que le JSON soit généré correctement.

Rechercher l’espace de travail Power BI et les ID 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 de ID d'espace de travail Power BI et ID de rapport

Problèmes connus et limitations

  • L'ouverture de ce formulaire dans le concepteur de formulaires Power Apps n'affiche 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 sont authentifiés automatiquement dans Power BI avec leur nom d’utilisateur et mot de passe Power Apps. Si un compte Power BI avec des informations d’identification correspondantes n’existe pas, une invite de connexion s’affiche comme illustré ici.

    Invite de connexion Power BI.

    Aucune donnée ne s’affiche si un compte incorrect 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 de rapport affichées dans Power Apps est identique à Power BI, et Power Apps rôles et privilèges de sécurité 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 similaires aux rôles de sécurité et aux équipes de Power Apps, utilisez la sécurité au niveau de la ligne (RLS) avec Power BI.

  • Si le formulaire n’affiche pas le rapport Power BI après avoir importé la solution et publié des personnalisations, ouvrez-le dans le concepteur de formulaires piloté par modèle et enregistrez-le afin que le formulaire JSON soit régénéré.

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

  • L'incorporation d'un rapport Power BI ne prend pas en charge les références entre locataires. Par exemple, la tentative d'incorporation d'un rapport Power BI appartenant au locataire Contoso dans une application basée sur un modèle appartenant au locataire Fabrikam n'est pas prise en charge, même si le rapport incorporé a été partagé avec les utilisateurs du locataire Fabrikam via Power BI.

  • Les rapports épinglés dans les tableaux de bord Power BI ne doivent pas être interactifs. Si vous souhaitez avoir des rapports interactifs Power BI, incorporez-les directement au lieu de les épingler à un tableau de bord.

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 s'agir du même type, tels que chaîne de caractères dans Power BI et chaîne de caractères 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égrez un tableau de bord Power BI dans un tableau de bord personnel piloté par modèle Power Apps

Utiliser Power BI avec des applications Dynamics 365