這是使用微軟Power BI Embed功能,在自定義WEB應用中嵌入報表的系列入門指南。系列文章共分為三篇,這是第一篇。
背景
通常我們使用Power BI(下文簡稱為PBI)的模式分為以下幾種情況
- 個人使用者或者小團隊內部使用,在PBI Desktop內開發和檢視報表資料。這種辦法不需要付費,也不需要申請PBI 賬號。
- 一人開發,多個使用者檢視報表,就需要使用共享方式讓其他使用者通過PBI入口網站進行訪問。這種方案的缺陷是,所有檢視報表的人員都需要購買獨立的PBI Pro賬號,並且只能通過PBI門戶進行檢視操作。
- 把報表嵌入到自定義Web應用中,這種方案下只有開發人員需要Pro賬號,檢視人員通過自定義Web應用檢視報表。這是最靈活的方案,但是需要額外的程式開發工作量。
本文討論最後一種嵌入方案,用一個簡單的案例對整個開發流程進行簡單演示。
Power BI 提供了Embedded功能(下文簡稱PBIE),使用特定 API,將儀表板和報表嵌入自定義應用中。 可以利用 JavaScript 和 REST API 滿足個性化的嵌入需要。檢視報表的使用者無需瞭解有關 PBI 的機制,也無需Pro賬號。
準備工作
配置ODBC
PBI Desktop,以及後面介紹的PBI閘道器,在報表開發和執行階段都需要訪問資料來源。在我們的案例中,使用Greenplum資料庫。雖然PBI Desktop自帶了PostgreSQL的驅動,但是為了滿足PBIE遠端訪問的要求,我們仍然自建一個ODBC資料來源。如下圖我們建立一個名稱是GP-Prod的資料來源,這個名稱我們後面還會用到。

購買Power BI Pro賬號
至少需要有一個 PBI Pro 帳戶才能建立嵌入式應用程式。 這個帳戶由報表開發管理人員使用,並且充當應用程式的主帳戶(PBI服務將其視為代理帳戶)。 藉助 PBI Pro 帳戶,在訪問報表時生成嵌入令牌,用於訪問PBI 服務中的儀表板和報表。
註冊Azure AD App
在 Azure Active Directory (Azure AD) 中註冊應用程式,用於嵌入 PBI 內容。使用 Azure AD 註冊應用程式後,應用程式將能夠訪問 PBI REST API。 此操作能夠為應用程式建立標識,並指定對 Power BI REST 資源的許可權。
註冊的關鍵步驟包括
- 使用 PBI 應用註冊工具註冊
- 使用 Azure 門戶修改許可權
- 獲得應用程式ID
因為這個註冊流程步驟比較多且官方手冊有非常詳細的描述,所以這裡不再把具體步驟的圖片貼上來。具體的操作請參考官方文件docs.microsoft.com/zh-cn/power…
建立Workspace
只有釋出到應用工作區的報表才能被PBIE訪問,所以我們要在Pro賬號下建立一個應用工作區。
如下圖,在【工作區】選單下點選【建立應用工作區】,提供名稱。其他的選項都使用預設值。

建立成功後,我們就擁有了預設的【我的工作區】和新建的【danlu_workspace】,可以在選單中進行工作區的切換。如下圖

安裝Gateway
釋出到工作區的報表和資料集,不能直接訪問位於公司內部的資料庫。PBI提供了閘道器來實現這種跨網路訪問需求。簡單的說,就是在本地機器上執行PBI Gateway服務,並且在Pro賬戶下配置閘道器需要訪問的資料來源,遠端的報表和資料集通過閘道器來間接訪問到本地資料。
登入PBI門戶後,在右上角找到下載閘道器的連結,如下圖

安裝閘道器的流程很簡單,但是有兩點需要注意
- 使用推薦的本地閘道器,如下圖所示
- 使用和建立工作區相同的Pro賬號

配置Gateway
本地閘道器安裝之後,遠端同名Pro賬號下就會出現這個閘道器資訊。為了能夠訪問本地資料來源,我們需要在遠端閘道器下配置相應的資料來源資訊。一個閘道器下可以配置多個不同的資料來源滿足不同報表的需求,每個資料來源都有自己的型別和連線資訊。這裡我們僅配置一個ODBC源。
首先在【設定】選單下點選【管理閘道器】,如下圖

我們會看到一個名稱是GW-Danlu的閘道器(這個名稱是本地建立閘道器時提供的名字),點選三個小圓點開啟選單,然後點選【新增資料來源】,如下圖


我們新建一個ODBC資料來源來連線我們前面配置的本地ODBC DSN,特別要注意的是連線字串的寫法是 dsn=GP-Prod ,其中GP-Prod是我們本地資料來源的名稱,如下圖

待續。。。