Power BI Embedded 實做記錄

  • 1912
  • 0

Power BI 是微軟推出的視覺化互動報表服務,可以方便建構出企業做為決策參考用的互動式報表,在使用上要看到報表比較常見的兩種模式,一為直接 Host 在 Power BI 網站的報表,觀看者會取得一個特定的報表網址來察看,另一種模式為網頁內嵌的方式。根據察看對象的不同,可以選擇不一樣的模式來呈現,假設是企業內部要察看報表,可以選擇 Power BI Host 的報表,我們只需要將報表製作完成之後發佈上去即可,而觀看者會需要 Power BI Pro 授權 (發佈為 Public 的話可以不需要授權),如果要做成服務提供給企業內部或是客戶察看報表就會用到今天要介紹的 Power BI Embedded,可以將報表內嵌在網頁內,而 Host 的服務則是使用 Azure。

前言

Power BI 是微軟推出的視覺化互動報表服務,可以方便建構出企業做為決策參考用的互動式報表,在使用上要看到報表比較常見的兩種模式,一為直接 Host 在 Power BI 網站的報表,觀看者會取得一個特定的報表網址來察看,另一種模式為網頁內嵌的方式。根據察看對象的不同,可以選擇不一樣的模式來呈現,假設是企業內部要察看報表,可以選擇 Power BI Host 的報表,我們只需要將報表製作完成之後發佈上去即可,而觀看者會需要 Power BI Pro 授權 (發佈為 Public 的話可以不需要授權),如果要做成服務提供給企業內部或是客戶察看報表就會用到今天要介紹的 Power BI Embedded,可以將報表內嵌在網頁內,而 Host 的服務則是使用 Azure。

針對 Power BI 授權的選擇還有很多考慮的因素和定價模式,可以參考官方的定價頁面 (Power BIPower BI Embedded),就不詳細說明了。本文是以官方教學「教學課程:使用「對客戶進行內嵌」範例應用程式內嵌 Power BI 內容」為基礎將一些實做的步驟和結合 Azure 上的服務,實做中遇到的問題記錄下來,希望對實做上也一樣有遇到問題的朋友有點幫助。

實做

因為我們僅為了產生 Embedded 的 Token,並沒有另外需要存取更多 Power BI 的服務和 API,以及安全性的考量,所以選擇服務主體 (Service Principal) 來作為驗證的方式。

另一種方式為主要使用者 (Master User) ,會需要在程式設定內輸入使用者帳號和密碼

註冊 AAD 應用程式

首先在 Azure Portal 上點選 Azure Active Directory → 應用程式註冊 → 新增註冊,來建立一個新的應用程式。

輸入名稱點選註冊就完成了。

建立好之後,記錄下應用程式識別碼 (ClientId) 和 目錄識別碼 (TenantId)

再來新增一組用戶端密碼 (ClientSecret) 並且記錄下來,離開畫面之後就不會再顯示密碼,如果沒有記錄下來就要重新產生了。

建立 Power BI Embedded

再來因為我們之後會使用 Azure 的 Power BI Embedded 來提供報表的服務,所以接下來就是在 Azure 上面建立 Power BI Embedded 服務,在開發階段如果帳號有 Pro 授權可以先使用 Pro 授權來執行報表,此服務最便宜的定價層一個月需要台幣兩萬多元,開發測試一直開著會產生較高的額外成本,如果要測試的話也記得測試完之後先行關閉服務,避免閒置時候還是產生費用

選擇資源群組和輸入相關資訊來建立服務。注意選擇的定價層,在正式上線服務的時候可以根據服務的使用者數來選擇定價,另外管理員請確認是有 Power BI 管理權限的帳號,後面在 Power BI 內才有辦法選擇到這一個服務。

不使用的時候記得暫停服務,避免產生額外的成本。

建立和設定工作區

接下來作業會在 Power BI 服務站台內操作。

因為我們選取使用服務主體來作為驗證,所以需要先設定服務主體可以使用 Power BI API。

如果要提高安全性,可以另外設定安全性群組,並且將應用程式設定為成員,這邊選擇整個組織會讓所有應用程式都可以有權限來使用 Power BI API

建立工作區。

建立完成之後設定工作區要跑在哪種定價層底下,因為我們要跑在前面建立的 Azure Power BI Embedded 上面,所以選擇內嵌,並且選取前面建立的服務名稱。

如果 Azure Power BI Embedded 服務是在停用狀態,這邊會無法選擇到停用的項目。

接下來設定服務主體有存取的權限,在輸入電子郵件地址的輸入框輸入前面建立的應用程式名稱應該就會列出來,接下來選擇角色為系統管理員,就可以加入這一個應用程式的存取權限了。

這邊一定要選取系統管理員,不然之後產生 Embedded Token 時候會沒有足夠權限。

接下來下載官方的報表範例來新增報表,到官方的 PowerBI Desktop Samples 下載範例檔案。可以在 Sample Reports 找到報表檔案。

回到工作區選擇新增 → 上傳檔案,選取在本機的檔案。

匯入成功的話就可以看到資料及和報表了。

接下來點開報表,然後複製網址中的參數,在 groups 和 reports 中間的第一個區段為工作區識別碼 (WorkspaceId),Reports 後面的第二個區段為報表識別碼 (ReportId)

程式範例執行

到這邊相關的資訊和報表都完成了,最後就是程式的部分,直接下載官方的程式碼範例,後面我選擇 .NET Core 作為範例來執行。

打開專案之後,開啟 appsettings.json ,分別輸入前面記錄下來的參數,我在前面文章參數後面都有特別標註參數名稱,大家可以比對一下就知道要填入的值了。

執行之後如果設定和參數都正確的話,就可以正去的顯示報表在網頁上面了。

結論

Power BI 是個很強大的互動報表服務,針對不同情境和需求也都有對應的使用或開發方式,本文僅針對網頁要嵌入報表的過程特別記錄一下注意的點,並且嘗試使用 Azure 服務來執行報表,實務上還是針對服務的對象和流量可以選擇成本較低的定價模式,後續會再介紹透過 Power BI API 來程式化使用報表的一些經驗和記錄。

參考資料