次の方法で共有


Power BI レポートをモデル駆動型アプリのメイン フォームに埋め込む

Power Apps モデル駆動型アプリで Power BI レポートを使用して、メイン フォームに豊富なレポート作成と分析を導入して、ユーザーがより多くを達成するよう強化します。 これでシステム間でデータを集約できるようになり、単一レコードのコンテキストに合わせて調整します。  

前提条件

Power BI コンテンツの埋め込みはオプション機能で、すべての環境において既定で無効になっています。 Power BI コンテンツを埋め込む前に、それを有効にする必要があります。 詳細: 組織で Power BI ビジュアル化を有効にする

この機能を使用するには、ソリューションをエクスポートし、XML スニペットを置き換えるように修正して、環境にインポートし直す必要があります。 必ず、アンマネージド ソリューションのみを使用して開発環境に変更をインポートしてください。 既存のアンマネージドソリューションにアップデートをインストールする方法については、ソリューションのインポート、アップデート、エクスポートを参照してください。

コンテキストのフィルター処理なしで埋め込む

Power BI レポートを埋め込むことで、全く同じレポートを取得できます。 これは、現在のモデル駆動型フォームへのコンテキストを伴わないため、テーブルのすべてのレコードについて同じレポートが得られます。 たとえば、次のレポートは一度にすべての取引先企業の地理的位置を示しており、要約情報を表示するのに役立ちます。

コンテキスト フィルターを使用しない埋め込みの Power BI レポートです。

メイン フォームの XML controls ノードをカスタマイズして、次の手順に従って組み込み Power BI レポートとタイルをホストします。

  1. 開発環境で、ソリューションを作成し、埋め込み Power BI レポートを表示したいメイン フォームを含むテーブルを追加します。 テーブルをソリューションに追加する際に、コンポーネントの選択 オプションを選択します。 次に、テーブルのメイン フォームだけを追加します。

  2. ソリューションでテーブルのメイン フォームを編集し、Power BI レポートを埋め込むプレースホルダーのサブグリッドを追加します。

    • フォーム デザイナーでサブグリッドのラベルと名前を更新します。

    Power BI 埋め込み型プレースホルダー

  3. ソリューションをアンマネージドとしてエクスポートし、ソリューション パッケージの zip ファイル内のすべてのファイルを抽出します。 次に、customizations.xml ファイルを編集し、サブグリッドの名前を見つけます。 customizations.xml ファイルの <control> ブロック内にある XML コードを置き換えてください。 親 cell ノードの rowspan は、埋め込まれた Power BI レポートのサイズを変更して調整することができます。

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

    重要

    XML のサンプルに示すように、コントロール classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}" を必ず使用してください。

    • Power BI レポート用の customizations.xml ファイルにコピーしたフォーム XML に次の変更を加えます。 このテーブルは、以前の XML サンプルの要素に変更する必要がある値を示しています。
    プロパティ 説明設定
    PowerBIGroupId Power BI ワークスペース ID。 レポートがマイ ワークスペースにある場合、ワークスペース ID は 00000000-0000-0000-0000-000000000000 です。 それ以外の場合は、ワークスペース ID を追加します。 ワークスペースの ID は、Power BI サービス URL にあります。 詳細: Power BI ワークスペースとレポート ID の検索
    PowerBIReportId Power BI レポート ID。 これを埋め込む必要があるレポートと置き換えます。 レポートの ID は、Power BI サービス URL にあります。 詳細: Power BI ワークスペースとレポート ID の検索
    TileUrl 埋め込む Power BI レポートの URL です。 正しい Power BI サブドメイン名 (app.powerbi.com に置き換える必要がある場合あり) とレポート ID (reportId=544c4162-6773-4944-900c-abfd075f6081 を独自のものと置き換えてください) を必ず使用してください。 たとえば、https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081 などとします。
  4. 以前に抽出したすべてのソリューション ファイルから ZIP ファイルを作成します。 その後、開発の環境でソリューションをインポートします。

コンテキストのフィルター処理で埋め込む

現在のモデル駆動型フォームにコンテキスト フィルターを適用し、現在の行の属性に基づいてレポートがフィルタリングされるようにすることで、Power BI レポートをより有意義なものにすることができます。 例えば、次のレポートはアカウント名を使用して Power BI レポートをフィルター処理し、アカウントの地理的位置を表示します。 これにより、単一のレポートでテーブルのすべての行に対するコンテキスト化された情報を表示できます。

コンテクストのフィルター処理を使用して Power BI レポートを埋め込みます。

ここで示すように、フィルター処理は <parameter> ブロックに <PowerBIFilter> 要素を加えることで実行されます。 フォームのテーブルの任意の属性を使用してフィルター式を作成できます。 詳細: フィルターの作成 で独自のフィルターを作成する方法を説明します。

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

これはフィルター処理されていないレポートの埋め込みと同じコントロールを使用することに注意し、それゆえコントロール クラス ID は変更されないままです。

次の表では、前にあった XML サンプルの任意の追加プロパティについて説明します。

プロパティ 内容
PowerBIFilter フォーム属性をパラメーターとして渡すことによって Power BI レポートをコンテキスト化するフィルター式。 より読みやすくするために、フィルターはここで示すように作成されています。 フィルター式は、カンマで区切られた値のリストにすることはできません。
	{
	        "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"
	        }
	}

前の式の対象部分はフィルタを適用するテーブルと列を識別します。 オペレーターはロジックを識別し、値は Power Apps モデル駆動型アプリから渡されたデータを識別します。 汎用な方法でパラメータ化するために、値はエイリアスによって作成されます。 前の式では、取引先企業の が渡され、どちらも Power BI レポートの 取引先企業名 列で検索されます。 はここで渡される取引先企業テーブルの属性の一意の名前であることに注意してください。

フィルターの作成 の例を見て $schema と filterType に適切な値を指定することにより、もっと複雑なフィルター式を作成できます。 JSON が正しく生成されるように、フィルター部分で " を使用して各リテラルを確実にエスケープしてください。

Power BI ワークスペースとレポート ID の検索

  1. この例のワークスペース ID 値は efc85277-2bdb-47bc-9762-363f64335108 です。
  2. この例のレポート ID は 643ab643-7126-4a57-bd82-ca8f1fb676fc です。 Power BI ワークスペース ID とレポート ID の例

既知の問題と制限事項

  • この統合はサポートされている Web ブラウザおよびモバイル デバイス上の、統一インターフェイスのクライアントでのみ利用可能です。

  • Power Apps フォーム デザイナーでこのフォームを開いても、コントロールが意味のある方法では表示されません。 これはコントロールがフォーム デザイナーの外部でカスタマイズされているためです。

  • ユーザーは Power Apps のユーザー名とパスワードで自動的に Power BI に認証されます。 資格情報が一致する Power BI アカウントが存在しない場合は、ここに示すようなサインイン プロンプトが表示されます。

    Power BI のサインイン プロンプト。

    誤ったアカウントを使用して Power BI にログインした場合はデータが表示されません。 正しい資格情報でサインインするには、サインアウトして、もう一度サインインしてください。

    Power BI サービスにサインインします。

    サインインしているユーザーに適切なアクセス許可がありません。

  • Power Apps 内部で示されるレポート データのビューは Power BI と同じであり、Power Appsのセキュリティ ロールと権限は表示されるデータに影響しません。 したがって、データは Power BI データセットの作成者が見るものと基本的に同じです。 Power Apps のセキュリティ ロールとチームと同様のデータ アクセス制限を適用するには、Power BI を使った行レベルセキュリティ (RLS) を使用します。

  • ソリューションをインポートしてカスタマイズを公開した後、フォームに Power BI レポートが表示されない場合、モデル駆動型フォーム エディターで開いて保存するとフォーム JSON が再生成されます。

  • フォーム上の Power BI タイルを埋め込みについては、コンテキスト フィルタリングなしでのみサポートされます。

  • Power BI レポートの埋め込みは、テナント間の参照に対応していません。 たとえば、埋め込まれるレポートが Power BI で Fabrikam テナントのユーザーと共有されている場合でも、Contoso テナントに属する Power BI レポートを Fabrikam テナントに属するモデル駆動型アプリに埋め込む操作には、現在対応していません。

  • Power BI ダッシュボードの一部としてピン留めされたレポートは、インタラクティブに操作できるものではありません。 インタラクティブな Power BI レポートが必要な場合は、ダッシュボードにピン留めするのではなく、直接埋め込みます。

一般的な問題

  • 必要な場合でも、グループ ID は制御パラメーターの TileUrl ノードに指定されていません。 この例には、グループ ID が含まれています。
<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>
  • Power BI と Dataverse では、フィールドのデータ型が異なります。 Power BI の文字列と Dataverse の文字列のように、同じ種類である必要があります。
  • 文字列フィールドには、Power BI フィルターでエスケープされた引用符がありません。 注意: values[\"$a\"] であり、[$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",
	        }
	}

参照

Power Apps モデル駆動型個人用ダッシュボードに Power BI ダッシュボードを埋め込む

Dynamics 365 アプリで Power BI を使用する