將 Power BI 報表內嵌於模型導向應用程式主要表單
您可以在 Power Apps 模型導向應用程式中使用 Power BI 報表,為主要表單提供豐富的報表與分析,讓使用者可以完成更多工作。 這可發揮強大功能,以彙總不同系統之間的資料,並依需要調整至單一記錄的內容。
先決條件
內嵌 Power BI 內容是選用功能,預設會在所有環境上停用。 您必須先啟用此功能,才能內嵌 Power BI 內容。 其他資訊:在組織中啟用 Power BI 視覺效果。
此功能需要匯出解決方案、進行修改以加入 xml 程式碼片段,然後重新匯入環境中。 請務必僅透過受管理的解決方案匯入目標環境上的變更。 請參閱匯入、更新和匯出解決方案,以取得有關將更新安裝到現有受管理的解決方案的指引。
內嵌但不使用關聯式篩選
內嵌 Power BI 報表後即可使用它們,而且取得完全相同的報表。 這並不需要將其內容關聯至目前的模型導向表單,因此您會在資料表的所有記錄上取得相同的報表。 例如,下列報表一次顯示所有客戶的地理位置,這在顯示摘要資訊時非常實用。
您可以透過以下步驟自訂主要表單 XML sections
節點,以便其裝載內嵌 Power BI 報表和圖格:
在您的開發環境中建立解決方案,並新增包含您要顯示內嵌 Power BI 報表之主要表單的資料表。
- 如果該表格已存在於您要匯入解決方案的目標環境中,請在將該表格新增至解決方案時,選擇選取元件選項。 然後,只新增資料表的主要表單。
- 如果該表格不存在於您要匯入解決方案的目標環境中,請在將該表格新增至解決方案時,選擇包含所有元件。
將解決方案匯出為受管理的解決方案。
解壓縮解決方案套件 zip 檔案中的所有檔案。 然後,編輯 customizations.xml 檔案,並將下方提供的 XML 程式碼新增至 customizations.xml 檔案
<forms type="main">
節點內的<sections>
區塊中。
<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>
重要
請務必使用控制項 classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}"
,如 XML 範例中所示。
- 對複製到 Power BI 報表 customizations.xml 檔案中的 XML 表單進行以下變更。 此資料表說明您需要變更為先前 XML 範例中之元素的值。
屬性 | 名描述 |
---|---|
PowerBIGroupId | Power BI 工作區識別碼。 如果您的報表位於我的工作區,**則工作區識別碼為 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 。 |
solutionaction="Added" | 如果目標環境中已有該資料表,則保留 XML 範例中提供的儲存格元素的 solutionaction=Added 參數。 如果目標環境中不存在該資料表,請移除此 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>
請注意,這和未篩選的報表內嵌一樣使用相同的控制項,因此控制項類別識別碼保持不變。
下表說明上一個 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。
匯入前移除未修改的屬性
將解決方案匯入目標環境之前,請確定未修改的屬性不包含在 customizations.xml 檔案的 formXml 區段中。 如果包含 Power BI 控制項 XML 的 XML 中有未修改的屬性 ,請在將該解決方案匯入目標環境之前,先移除該屬性。 例如,將 <systemform unmodified="1">
取代為 <systemform>
。
尋找 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",
}
}