將 Power BI 報表內嵌於模型導向應用程式主要表單
您可以在 Power Apps 模型導向應用程式中使用 Power BI 報表,為主要表單提供豐富的報表與分析,讓使用者可以完成更多工作。 這可發揮強大功能,以彙總不同系統之間的資料,並依需要調整至單一記錄的內容。
先決條件
內嵌 Power BI 內容是選用功能,預設會在所有環境上停用。 您必須先啟用此功能,才能內嵌 Power BI 內容。 其他資訊:在組織中啟用 Power BI 視覺效果。
此功能需要匯出解決方案,進行修改以取代 XML 程式碼片段,然後重新匯入到環境中。 請務必僅透過非受控解決方案匯入開發環境中的變更。 前往匯入、更新和匯出解決方案,以取得安裝現有非受控解決方案更新的指指引。
內嵌但不使用關聯式篩選
內嵌 Power BI 報表後即可使用它們,而且取得完全相同的報表。 這並不需要將其內容關聯至目前的模型導向表單,因此您會在資料表的所有記錄上取得相同的報表。 例如,下列報表一次顯示所有客戶的地理位置,這在顯示摘要資訊時非常實用。
您可以透過以下步驟自訂主要表單 XML controls
節點,以便其裝載內嵌 Power BI 報表和圖格:
在您的開發環境中建立解決方案,並新增包含您要顯示內嵌 Power BI 報表之主要表單的資料表。 將資料表新增至解決方案時,選擇選取元件選項。 然後,只新增資料表的主要表單。
在解決方案中編輯資料表的主要表單,並在想要內嵌 Power BI 報表的位置新增預留位置子格。
- 在表單設計工具中更新子格的標籤和名稱。
將解決方案匯出為非受控解決方案,並提取解決方案包 zip 檔案中的所有檔案。 然後,編輯customizations.xml檔案並找到子格的名稱。 替換誌中 customs.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>
重要
請務必使用控制項
classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}"
,如 XML 範例中所示。- 對複製到 Power BI 報表 customizations.xml 檔案中的 XML 表單進行以下變更。 此資料表說明您需要變更為先前 XML 範例中之元素的值。
屬性 名描述 PowerBIGroupId Power BI 工作區識別碼。 如果您的報表位於我的工作區中,則工作區 ID 為 00000000-0000-0000-0000-000000000000。 否則,請新增工作區識別碼。 您可以在 Power BI 服務 URL 中找到工作區識別碼。 其他資訊:尋找 Power BI 工作區和報表識別碼。 PowerBIReportId Power BI 報表識別碼。 將此屬性取代為您想要嵌入的報表。 您可以在 Power BI 服務 URL 中找到報表識別碼。 其他資訊:尋找 Power BI 工作區和報表識別碼 TileUrl 您要內嵌的 Power BI 報表 URL。 請務必使用正確的 Power BI 子網域名稱 (您可能需要將 app.powerbi.com 取代為您自己的名稱) 和報告識別碼 (將 reportId=544c4162-6773-4944-900c-abfd075f6081 取代為您自己的識別碼)。 例如: https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081
。- 對複製到 Power BI 報表 customizations.xml 檔案中的 XML 表單進行以下變更。 此資料表說明您需要變更為先前 XML 範例中之元素的值。
從先前解壓縮的所有解決方案檔案中建立 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>
請注意,這和未篩選的報表內嵌一樣使用相同的控制項,因此控制項類別識別碼保持不變。
下表說明上一個 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 模型導向應用程式所傳遞的資料。 為了以一般方式參數化,值是透過建立別名的方式來建構。 在先前的運算式中,傳遞了客戶的 firstname 和 lastname 值,並在 Power BI 報表的客戶名稱欄中搜尋其中任一值。 請注意,firstname 和 lastname 是客戶資料表之屬性的唯一名稱,這裡會傳遞該資料表的值。
您可查看建構篩選中的範例,並為 $schema 和 filterType 提供適當的值,以建立更複雜的篩選運算式。 確保使用 " 轉義篩選器部分中的每個文字,以便正確產生 JSON。
尋找 Power BI 工作區和報表識別碼
已知問題與限制
只有在整合介面用戶端、支援的網頁瀏覽器和行動裝置上,才能使用這項整合。
在 Power Apps 表單設計師中開啟此表單,將無法以有意義的方式顯示控制項。 這是因為控制項是在表單設計師之外進行自訂。
登入 Power BI 時,系統會自動使用 Power Apps 使用者名稱和密碼來驗證使用者。 如果認證相符的 Power BI 帳戶不存在,將會出現登入提示,如下所示。
如果使用錯誤的帳戶登入 Power BI,則不會顯示任何資料。 若要使用正確的認證登入,請登出然後再次登入。
Power Apps 中顯示的報表資料檢視與 Power BI 的相同,而且 Power Apps 資訊安全角色和權限不會影響所顯示的資料。 因此,資料基本上會與 Power BI 資料集建立者所看到的相同。 若要套用類似於 Power Apps 資訊安全角色及團隊的資料存取限制,請使用 Power BI 的資料列層級安全性 (RLS)。
如果匯入解決方案並發行自訂之後,表單未顯示 Power BI 報表,請在模型導向表單編輯器中開啟並儲存該表單,以便重新產生表單 JSON。
只有在沒有內容篩選的情況下,才支援在表單上內嵌 Power BI 圖格。
內嵌 Power BI 報表不支援跨租用戶引用。 例如,目前不支援嘗試在屬於 Fabrikam 租用戶的模型導向應用程式中內嵌屬於 Contoso 租用戶的 Power BI 報表,即使內嵌的報表已透過 Power BI 與 Fabrikam 租用戶中的使用者共用也一樣 。
作為 Power BI 儀表板一部分的釘選報表並不代表具有互動性。 若要擁有互動式 Power BI 報表,請直接嵌入報表,而不是將其釘選到儀表板。
一般問題
- 當群組識別碼可能需要被指定時,沒有在控制項參數的
TileUrl
節點中被指定。 此範例包括群組識別碼。
<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",
}
}