(此文章同時發表在本人微信公衆號「dotNET開發經驗談」,歡迎右邊二維碼來關注。)web
題記:這篇其實不是一個操做嚮導了,主要對Power BI的嵌入特性進行探討。api
Power BI是微軟的創新性(或者稱之爲敏捷型)BI產品,從發佈之初就備受關注,由於它是一個只能以純SaaS模式提供服務端的BI產品。目前Power BI實際上是以兩種方式提供服務端:服務器
因此要把Power BI嵌入到Web應用程序中,針對不一樣的提供方式,也有不一樣的嵌入方式。微信
Power BI Service通常經過Azure Active Directory進行驗證後(即你的Web應用必須使用AAD作驗證),使用iframe把報表嵌入到應用頁面中。好比MS Teams就使用這種方式集成了Power BI。同時還能夠利用Power BI REST API來實時更新數據。下圖展現了進行集成的總體流程:app
微軟已經很貼心的給出了一個示例和文檔來指導你們進行Power BI Service的集成(都不須要我來寫了):https://powerbi.microsoft.com/zh-cn/documentation/powerbi-developer-integrate-report/。大體步驟以下:工具
考慮到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
具體的步驟能夠看官方的文檔,已經寫的足夠好和詳細了:https://docs.microsoft.com/zh-cn/azure/power-bi-embedded/power-bi-embedded-get-started對象
下面咱們來對Power BI和Qlik Sense在嵌入Web應用這個方面進行一個簡單比較:
比較點 | Power BI | Qlik Sense |
iframe方式嵌入 | 支持 | 支持 |
div方式嵌入 | 不支持 | 支持 |
儀表盤嵌入 | 支持 | 支持 |
報表/工做表嵌入 | 支持 | 支持 |
磁貼/可視化對象嵌入 | 支持 | 支持 |
嵌入後客戶端操做 | 支持 | 支持 |
開發工具支持 | 弱 | 強 |
本地AD/Windows驗證 | Embedded支持 | 支持 |
Azure AD驗證 | Service支持 | 支持(需在QMC中配置) |
自定義驗證 | Embedded支持 | 支持 |
整體而言,Qlik Sense的嵌入靈活度和便捷性更高。可是Power BI這種租用服務的方式也有優點。