如何把Power BI嵌入到Web應用中

(此文章同時發表在本人微信公衆號「dotNET開發經驗談」,歡迎右邊二維碼來關注。)web

題記:這篇其實不是一個操做嚮導了,主要對Power BI的嵌入特性進行探討。api

Power BI是微軟的創新性(或者稱之爲敏捷型)BI產品,從發佈之初就備受關注,由於它是一個只能以純SaaS模式提供服務端的BI產品。目前Power BI實際上是以兩種方式提供服務端:服務器

  1. Power BI Service。只能經過Office 365來購買訂閱,通常做爲一個獨立的BI應用供企業內部使用。
  2. Power BI Embedded。只能經過Azure來購買,按使用量付費,主要知足ISV(獨立軟件供應商)在自身Web應用中集成BI功能提供給最終用戶的需求。

因此要把Power BI嵌入到Web應用程序中,針對不一樣的提供方式,也有不一樣的嵌入方式。微信

經過Power BI Service嵌入

Power BI Service通常經過Azure Active Directory進行驗證後(即你的Web應用必須使用AAD作驗證),使用iframe把報表嵌入到應用頁面中。好比MS Teams就使用這種方式集成了Power BI。同時還能夠利用Power BI REST API來實時更新數據。下圖展現了進行集成的總體流程:app

Overview

微軟已經很貼心的給出了一個示例和文檔來指導你們進行Power BI Service的集成(都不須要我來寫了):https://powerbi.microsoft.com/zh-cn/documentation/powerbi-developer-integrate-report/。大體步驟以下:工具

  1. 經過Office 365訂閱Power BI服務(有免費可選),有了Office 365,天然就有AAD租戶。固然也能夠反過來,使用已有的AAD租戶(必須是企業組織)來註冊免費的Power BI服務
  2. 註冊你的Web應用,能夠直接在Azure Portal中註冊(建議使用這種方式),或者使用Power BI應用註冊工具註冊。以Power BI應用註冊工具爲例:App Type選擇服務端應用,Redirect URL輸入相似http://localhost:13526/這樣的地址
  3. 把獲得的Client ID和Client Secret填寫到配置文件中,示例代碼是項目的Settings.settings
  4. 運行Web應用,使用Office365賬號登陸,獲取報表的嵌入Url,就能夠進行報表的嵌入瀏覽了

經過Power BI Embedded嵌入

考慮到Power BI Service主要用於企業內部,而且沒有單獨的服務器可供安裝,爲了解決ISV集成BI報表到本身產品的需求,微軟特地在Azure中提供了Azure Power BI Embedded雲服務。能夠把Azure Power BI Embedded看做是Qlik Sense的OEM模式,只是它是在線的OEM服務。它的優勢是:「經過使用Power BI Embedded服務,ISV就無需爲了開發與維護可視化功能和BI控件而自行投入研發力量。這些可視化功能能夠支持他們使用的所有設備,而ISV也可以充分地利用Power BI服務上不斷出現的各類創新功能以及他們的所有價值」。老實說我也基於Qlik Sense構思了相似Power BI Embedded的東西,要解決的就是這樣的問題,看來這個Idea仍是有市場的。開發工具

Power BI Embedded嵌入方式比Power BI Service的簡單些,最主要是經過AccessKey代替AAD驗證,頁面嵌入也是經過iframe來實現。固然訪問後臺的API是另一套,名字叫Azure Power BI Embedded REST API,不過有.NET和JS的SDK可供下載。下圖給出了一個嵌入步驟的概念模型:spa

簡單說來就是:rest

  1. 一個開發者首先須要申請Azure訂閱(能夠多個)
  2. 在Azure中建立一個或多個Power BI工做區集合,得到名稱和AccessKey
  3. 經過API來建立一個或多個Power BI工做區(工做區包含了報表、數據集等),得到工做區ID
  4. 經過API獲取工做區內的報表等信息,並經過AccessKey來得到EmbedToken
  5. 利用iframe(實際微軟提供了MVC的一些HtmlHelper和js供你們使用)來顯示嵌入的報表
  6. 最終用戶訪問你的Web應用從而瀏覽報表

具體的步驟能夠看官方的文檔,已經寫的足夠好和詳細了:https://docs.microsoft.com/zh-cn/azure/power-bi-embedded/power-bi-embedded-get-started對象

Power BI vs Qlik Sense

下面咱們來對Power BI和Qlik Sense在嵌入Web應用這個方面進行一個簡單比較:

比較點 Power BI Qlik Sense
iframe方式嵌入 支持 支持
div方式嵌入 不支持 支持
儀表盤嵌入 支持 支持
報表/工做表嵌入 支持 支持
磁貼/可視化對象嵌入 支持 支持
嵌入後客戶端操做 支持 支持
開發工具支持
本地AD/Windows驗證 Embedded支持 支持
Azure AD驗證 Service支持 支持(需在QMC中配置)
自定義驗證 Embedded支持 支持

整體而言,Qlik Sense的嵌入靈活度和便捷性更高。可是Power BI這種租用服務的方式也有優點。

相關文章
相關標籤/搜索