eltable刷新整个表格方法_利用SSAS实现PBI报表增量刷新
歡迎訪問我的博客網站閱讀最新BI文章
對于經常處理大量數據且其Power BI報表不需要每次都刷新整個數據集的用戶而言,增量刷新一直都是個問題,特別是對于那些沒有條件使用Premium空間的用戶以及在本地報表服務器發布報表的用戶。一個穩定可靠的方法是利用SSAS表格模型的既有功能去突破Power BI本身的局限性,具體實現的方法,簡而言之,就是讓Power BI以實時連接的方式連接到SSAS表格模型數據庫,因此刷新數據時不需要依賴Power BI本身,而依賴于數據處理功能更強大的SSAS--利用分區策略解決增量刷新。
本文將使用SSDT (Visual Studio 2017)作為演示, 如果你還沒有安裝可以點此到達下載頁面。對于使用Visual Studio 2019的用戶同樣適用,如果你的SQL Server版本較低且使用SSDT(Visual Studio 2012), 本文亦提供了相應的代碼。
案例介紹:
本案例需要完成一個可以動態展示近90天的銷售數據的PBI報表,但總數據量多達幾千萬行,每次都對數據集進行全量刷新是不現實的,下文演示會說明如何做到每天只刷新最新一天的數據,實現增量刷新。
方案演示:
首先打開SSDT2017新建表格模型項目,剛開始你需要先連接到表格模型實例。注意,理論上同一個SQL Server實例的多維數據集實例與表格模型實例不能并存,如果你的SSAS是多維數據集,你可以查看此文章以了解如何將多維數據集實例轉換為表格模型實例。(這樣做的原因是Power BI連接表格模型在性能上要好得多)
另一個要注意的一點是,如下圖所示,就是該表格模型項目的兼容級別。就我個人情況而言(也許對于多數用戶也如此),1200是最好的選擇。
然后在SSDT界面從SQL Server導入數據。本案例使用的數據集非常簡單,只有一個日期字段和兩個隨機生成的字段--No_(可以看作是產品號)以及Qty(可以看作是銷量),但數據量較大,每天會產生大約幾十萬行的新數據,部分數據如下所示:
然后我們在右側Tabular Model Explorer找到我們導入的表,選擇"Partitions(分區)"。在彈出的Partition Manager界面,你可以通過修改SQL語句將數據集分區,如下圖點擊"New"創建新的分區(可能很多PBI用戶沒用使用過SSDT,因此我特地在此說明),比如本案例將數據集按天分區,因此在原有SQL查詢語句基礎上增加了WHERE過濾條件。故而通過此方式,我們就可以把90天的數據按天分成90個分區,在每次刷新數據時,只需要刷新最新一天的分區就可以了,這樣就實現了增量刷新的目的。
然而,要實現真正動態的增量刷新,這種方式顯然行不通。當新的一天到來時,你不可能還回到SSDT,手動刪除最早的分區,手動創建最新的分區,再手動執行插入最新一天的數據。在BI的世界,手動這個詞是令人反感的,我們必須找到方法讓這一切都自動化。
幸運的是,我們可以在SSMS里將這一切操作以腳本方式運行。但首先我們需要發布我們的表格模型項目,這樣我們才能在SSMS連接到表格模型實例后看到它:
右鍵點擊表格(Query)選擇分區,如下所示, 通過點擊"Script Action to New Query Window",對應的操作腳本會在查詢窗口中打開,對于分區的一切操作(新建,修改,處理,刪除)都可以通過運行腳本完成。這樣我們就可以通過定時運行腳本的方式,讓數據集在最新的一天自動創建分區并插入新數據了。
在設計腳本之前,還需要完成最后一個步驟:在數據庫實例中創建鏈接數據庫。這是因為腳本需要使用SQL執行(而非MDX或DAX),這樣才可以調用SSAS腳本執行數據庫操作,因此需要一個連接到表格模型數據庫的數據庫實例提供一個可以操控SSAS數據庫的接口。
新建鏈接數據庫,如下圖,在Provider處選擇SSAS的OLEDB接口,如果沒有此選項,也許是因為在數據庫安裝時此組件沒被安裝,你可以自己去下載一個Provider for Analysis Services然后安裝到數據庫中。
完成上一步后,我們就可以在數據庫查詢窗口,使用SQL執行腳本。根據上文思路,此方案的完整代碼如下,你可以把代碼中<>中的值替換為你自己的值,在Query中換上你的SQL或更改其他必要的參數直接使用:
DECLARE現在我們可以在SSMS中設置作業讓腳本定時執行了,比如本案例中會設置它每天運行一次,那么每天數據集都只會刷新最新一天的數據,而無需全部都刷新一遍了。
最后,打開Power BI Desktop, 連接到SSAS數據庫。注意此處要選擇"Connect live",如下圖,這樣才能把Power BI的數據抽取業務"外包"給SSAS,否則我們前面的一堆步驟就算白做了:
我還附上了針對于較舊版本的SSAS的代碼,因為新版本的腳本格式是JSON,而舊版本使用XML,有此需求你可以到我的博客網站查看完整代碼。
End~
若喜歡本文請點贊支持下吧~只收藏不點贊貌似不太道義 ~_~
總結
以上是生活随笔為你收集整理的eltable刷新整个表格方法_利用SSAS实现PBI报表增量刷新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 妖怪手帐获取服务器信息失败,妖怪手账闪退
- 下一篇: 无向图的深度优先遍历非递归_LeetCo