Power BI レポートをモデル駆動型アプリのメイン フォームに埋め込む
Power Apps モデル駆動型アプリで Power BI レポートを使用して、メイン フォームに豊富なレポート作成と分析を導入して、ユーザーがより多くを達成するよう強化します。 これでシステム間でデータを集約できるようになり、単一レコードのコンテキストに合わせて調整します。
前提条件
Power BI コンテンツの埋め込みはオプション機能で、すべての環境において既定で無効になっています。 Power BI コンテンツを埋め込む前に、それを有効にする必要があります。 詳細: 組織で Power BI ビジュアル化を有効にする。
この機能は、ソリューションをエクスポートし、それを修正して XML スニペットを追加し、そして元の環境にインポートする必要があります。 管理ソリューションのみを介して、ターゲット環境に変更を必ずインポートしてください。 既存の管理ソリューションに更新プログラムをインストールするガイダンスは ソリューションのインポート、更新およびエクスポート を参照してください。
コンテキストのフィルター処理なしで埋め込む
Power BI レポートを埋め込むことで、全く同じレポートを取得できます。 これは、現在のモデル駆動型フォームへのコンテキストを伴わないため、テーブルのすべてのレコードについて同じレポートが得られます。 たとえば、次のレポートは一度にすべての取引先企業の地理的位置を示しており、要約情報を表示するのに役立ちます。
メイン フォームの XML sections
ノードをカスタマイズして、次の手順に従って組み込み Power BI レポートとタイルをホストします。
開発環境で、ソリューションを作成し、埋め込み Power BI レポートを表示したいメイン フォームを含むテーブルを追加します。
- ソリューションをインポートするターゲット環境にテーブルがすでに存在する場合は、テーブルをソリューションに追加するときに コンポーネントの選択 オプションを選択します。 次に、テーブルのメイン フォームだけを追加します。
- ソリューションをインポートするターゲット環境にテーブルが存在しない場合は、テーブルをソリューションに追加するときに すべてのコンポーネントを含める を選択します。
ソリューションを管理対象としてエクスポートします。
ソリューション パッケージの ZIP ファイル内のすべてのファイルを抽出します。 次に customizations.xml ファイルを編集し、customizations.xml ファイルの
<forms type="main">
ノードにある<sections>
ブロック内の 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>
重要
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 などとします。 |
solutionaction="Added" | テーブルがターゲット環境にすでに存在する場合は、セル要素の solutionaction=Added パラメーターを XML サンプルで提供された状態のままにします。 テーブルがターゲット環境に存在しない場合は、solutionaction=Added パラメータを削除します。 |
- 以前に抽出したすべてのソリューション ファイルから ZIP ファイルを作成します。 その後、対象の環境でソリューションをインポートします。
コンテキストのフィルター処理で埋め込む
現在のモデル駆動型フォームにコンテキスト フィルターを適用し、現在の行の属性に基づいてレポートがフィルタリングされるようにすることで、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 が正しく生成されるように、フィルター部分で " を使用して各リテラルを確実にエスケープしてください。
インポート前に変更されていない属性の削除
ソリューションをターゲット環境にインポートする前に、変更されていない属性が、customizations.xml ファイルの formXml セクションに含まれていないことを確認してください。 変更されていない属性が Power BI コントロール XML を含む XML に存在する場合、ソリューションをターゲット環境にインポートする前に属性を削除します。 たとえば、<systemform unmodified="1">
を <systemform>
に置き換えます。
Power BI ワークスペースとレポート ID の検索
- この例のワークスペース ID 値は efc85277-2bdb-47bc-9762-363f64335108 です。
- この例のレポート ID は 643ab643-7126-4a57-bd82-ca8f1fb676fc です。
既知の問題と制限事項
この統合はサポートされている Web ブラウザおよびモバイル デバイス上の、統一インターフェイスのクライアントでのみ利用可能です。
Power Apps フォーム デザイナーでこのフォームを開いても、コントロールが意味のある方法では表示されません。 これはコントロールがフォーム デザイナーの外部でカスタマイズされているためです。
ユーザーは Power Apps のユーザー名とパスワードで自動的に 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&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 を使用する
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。