Power BI 數據集和數據刷新

PowerBI報表是基於數據分析的引擎,數據真正的來源(Data Source)是數據庫,文件等數據存儲媒介,PowerBI支持的數據源類型多種多樣。PowerBI Service(雲端)有時不直接訪問Data Source,而是直接從PowerBI Service創建的數據集(Dataset)中獲取數據,數據集中存儲的內容主要分爲三部分:Data Source的數據(Data)、連接數據源的憑證(Credentials)、以及數據源的架構(Table Schema)等元數據(metadata)。PowerBI Service分析數據時,直接訪問Dataset獲取數據,執行聚合計算,以響應用戶的查詢請求。使用Dataset的好處是:PowerBI只需要維護統一的Data Store,不需要從衆多不同的DataSource中讀取數據,所需要的數據都能從單一的數據結構(Dataset)中讀取。

PowerBI Service爲每個發佈的Report自動創建一個Dataset,每一個Dataset的大小的上限是1GB。在導入(Import)連接模式下,PowerBI把多個Data Source的數據導入到Dataset中,也就是說,Dataset存儲的是多個數據源(Data Source)的快照。是否把數據源導入到Dataset,是由數據連接(Data Connection Model)決定的。

 

我的PowerBI開發系列的文章目錄:PowerBI開發

一,數據連接模式

當使用“Get Data”連接到Data Source時,PowerBI 自動創建Dataset,把數據從多個Data Source加載到一個Dataset中,Dataset還包含連接Data Source的憑證(Credentials),以及數據的架構等元數據。PowerBI Service直接從Dataset中引用數據,而不是直接從Data Source中。PowerBI支持的連接模式有兩種,分別是:Import,Live/DirectQuery。導入(Import)模式把Data Source的數據導入到PowerBI Service的Dataset中,而直接查詢(DirectQuery)模式建立Data Source 和Dataset之間的直接連接。

1,導入(Import)模式

對於導入(Import)模式,雲端的Dataset中存儲的數據來源於內網(On-Premises)數據的副本,一旦加載數據源,查詢定義的所有數據都會被加載到Dataset中。PowerBI從高度優化的Dataset中查詢數據,查詢性能高,能夠快速響應用戶的交互式查詢。由於導入模式是把數據源快照複製到Dataset中,因此,底層數據源的改動不會實時更新到Dataset,這使得Dataset存儲的數據是過時的,用戶需要手動刷新或設置調度刷新,否則,Dataset的數據不會更新。數據的刷新是全量更新,而非增量。

導入模式的限制是:Dataset的最大Size是1GB。

2,直接查詢(DirectQuery)模式

對於DirectQuery模式,PowerBI直接訪問底層的數據源,因此數據始終是最新的。一旦加載數據,PowerBI Service不會向Dataset中加載任何數據(Data),這意味着,Dataset不存儲任何數據(Data),但是,Dataset仍然會存儲連接Data Source的憑證,以及數據源的元數據,用於訪問底層數據源。在執行查詢請求時,PowerBI Service直接把查詢請求發送到原始的Data Source中去獲取所需的數據。直接查詢採用主動獲取數據的方式,這意味着,底層數據的任何更新,不會立即反應到現有的報表展示中,用戶需要刷新(Refresh)數據,但是,新的查詢請求,都會使用最新的數據。

直接查詢模式需要使用本地數據網管(On-Premises Data Gateway),PowerBI Service能夠從雲端向本地數據源(on-premises data sources)發送查詢請求。當產生數據交互行爲時,查詢直接發送到數據庫,Excel,Azure SQL DB/DW等,由於PowerBI和Data Source之間是直接連接,因此,不需要調度數據PowerBI Service的數據集(Dataset)。

Live/DirectQuery – This means there is a live connection between Power BI and the data source.

DirectQuery連接模式的好處是:

  • 能夠訪問更大Size的Dataset:由於不需要把數據加載到Dataset中,DirectQuery模式能夠從海量的數據源中加載數據;
  • 直接訪問數據源:在DirectQuery模式下,PowerBI使用的是最新的數據。

DirectQuery連接模式的調優:

在使用DirectQuery連接模式時,如果查詢數據源的速度非常慢,以至於需要等待一段時間才能從基礎數據表獲得響應,那麼可以在報表中設置Query reduction選項,向數據源發送更少的查詢,使查詢交互更快。

爲了設置Query reduction選項,你需要點擊 File 主菜單,點擊菜單的路徑是:File > Options and settings > Options,然後在CURRENT FILE目錄下,選擇 Query reduction 選項卡:

禁用默認的交叉高亮:在整個Report上禁用默認的交叉高亮顯示,所謂交叉高亮,是指當用戶點擊Visualization上的某一行數據時,其他Visualization相關聯的相關數據行也會高亮顯示。在禁用交叉高亮之後,用戶可以通過Visual interactions功能,手動爲特定的Visual啓用交叉高亮,默認情況下,是禁用交叉高亮。

在Slicer或Filer上顯示一個Apply按鈕:用戶可以選中相應的選項,但是,只有在點擊Apply按鈕之後,用戶選中的Slicer或Filer纔會用於過濾數據。

二,數據刷新(Data Refresh)

PowerBI Service從Dataset中獲取數據,用於數據分析和展示,用戶可以通過"SCHEDULE REFRESH"和"REFRESH NOW"刷新Dataset的數據,把Dataset的數據更新到最新。用戶刷新Dataset之前,必須配置內網數據網關(On-Premises Data Gateway),詳細信息,請參考我的博文《PowerBI開發 第六章:數據網管》。PowerBI Service對數據Dataset的刷新是完整數據刷新,而不是增量數據刷新。

When you refresh data, you are updating the data in the dataset that is stored in Power BI from your data source. This refresh is a full refresh and not incremental.

當使用Import連接模式時,所有的數據都會從Data Source導入到PowerBI Service的緩存中,PowerBI的可視化控件都是從緩存中查詢數據。一旦PowerBI文件發佈到PowerBI Service中,PowerBI 將會創建一個Dataset,用於存儲被導入的數據。設置調度,定時刷新Dataset,使得PowerBI呈現最新的分析數據,對於做出正確的決策是非常重要的。

三,連接模式的性能

推薦使用導入(Import)連接模式,這是因爲PowerBI 使用內存的列式數據庫 VertiPaq,用於對已發佈的數據集(Dataset)進行數據壓縮和快速處理,能夠使PowerBI報表執行脫機訪問,面向列的處理,高度優化對1:N關係的處理性能。導入模式非常適合聚合查詢,特別是,當存在大量的關係時,PowerBI能夠快速執行聚合運算。導入模式的缺點是Dataset的Size最大是1GB,需要調度刷新才能訪問最新的數據。

直接查詢(DirectQuery)模式,建立PowerBI和Data Source之間的直接連接,訪問的數據始終是最新的,並且數據源的大小是無限制的。在直接查詢模式下,PowerBI直接發送查詢到Datasource中,以獲取所需要的數據。當Data Source是關係型數據庫時,PowerBI直接發送SQL查詢語句到數據庫中。直接查詢模式的最大缺點是性能問題。

在直接查詢模式下,所有的直接查詢請求都直接發送到源數據庫中,後端數據源響應查詢請求的速度決定了直接查詢的性能。雖然PowerBI儘可能的優化生成的SQL命令,但是,通過監控發現,PowerBI最終生成的SQL命令是非常低效的,特別是在查詢海量的數據源時,後端(Back-end)數據源需要執行很長時間,才能返回結果。等待的時間超過30s,用戶體檢就很不理想了。當導入模式不能滿足業務需求時,再考慮直接查詢模式。

四,數據加載(並行和串行)

在設計PowerBI 報表時,我們使用兩種方式來刷新數據,可以手動逐個地刷新Query,也可以點擊Refresh按鈕同時刷新所有的Query。當點擊刷新全部(Refresh All)時,由於系統內存的限制,刷新操作可能會失敗。PowerBI Desktop加載數據的方式可以是串行的,也可以是並行的,默認是並行的,以串行方式加載數據,不需要很大的內存就可以完成。當PowerBI需要刷新很多Query時,刷新全部可能會使PowerBI佔用過多的系統內存而發生錯誤,此時,可以設置PowerBI,使其以串行的方式加載數據以解決這個問題。

設置串行加載數據的步驟是:點擊File->Opions & Settings->Options,如下圖所示,在CURRENT FILE選項卡中,打開"Data Load"分組,勾選“Enable parallel loading of tables”,啓用PowerBI的串行加載數據模式。

然而,這種模式只是以串行的方式把數據加載到PowerBI的緩存中,當在數據模型中創建連接時發生異常,或者在等待數據源返回數據集時出現異常,

數據刷新仍然會失敗。PowerBI的刷新全部數據(Refresh All)的工作流程類似於事務,只有當全部的數據集都刷新成功時,數據刷新纔是成功的;只要有一個數據集刷新失敗,整個刷新操作就失敗。

當需要查詢的數據集較多時,用戶體驗非常差。如果PowerBI不能解決大量數據集的刷新問題,那麼其功能是不完善的,期待PowerBI 團隊後續的更新會修復這個異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章