Power BI的增量刷新功能現在已經對Pro用戶開通,但由於種種限制,很多人依然無法使用無這個功能,所以,每一次刷新,都要徹底更新數據集。這對於量級比較大的數據集來說,着實是一件耗費時間的事情。
拿我的親身經歷舉個例子,我有一份報表涵蓋了客戶近3年的銷售情況,由於客戶的業務流量比較大,數據集的每一次手動刷新都在15分鍾左右,而計划刷新更是會延遲到35分鍾左右,嚴重影響到報表的日常使用。
不過呢,聰明如我( 偷笑 ),我還是發掘到了一個十分簡單的”增量刷新”解決方案,使用一個DAX函數就可以實現。希望我以下的分享可以給你帶來一些靈感。
在這里,我仍然使用NorthWind數據庫做演示,分別導入Orders表格以及Customers表格。
首先,在PowerQuery將數據集里,將包含了近三年銷售詳情的Orders表分為三張: Orders 2017, Orders 2018, Orders2019,里面分別包括了當年的所有銷售訂單。
實現步驟為:
1. 復制兩份Orders表格,分別重命名。
2. 對OrderDate日期列進行操作,篩選出當年的銷售數據 :
方法一 : M代碼( 以Orders 2017的日期篩選為例 )
"Lignes filters" = Table.SelectRows(#"Colonnessupprimées", each [OrderDate] >= #date(2017, 1, 1) and [OrderDate]<= #date(2017, 12, 31))
方法二 : 或在PQ界面,點擊OrderDate列篩選實現,
將銷售表格成功分割為三個年份的表格后,還要取消2017和2018這兩張表格的刷新資格(這一步非常重要)。
具體操作為,分別鼠標右擊這兩個表格,取消勾選“包含在報表刷新中”。
也就是說,在下一次更新數據集時,這兩張表格將不被刷新,不會再重新載入數據。
寫到這里,應該有一些小伙伴已經看出來我的意圖了 : 更新的時候只刷新2019年的銷售數據,然后再合並這三張表,獲取一個完整的Orders表格,不就約等於只刷新新增數據了嗎。沒錯!就是這樣。
所以接下來,我們要做的就是: 合並這三張表格。
那么問題來了,應該在PQ里直接合並嗎?
答案是否定的。
因為如果在PQ里以Orders2019作為主表格對它們進行合並,2018和2017兩張表格雖然被取消了刷新資格,但是作為2019的附屬表格,還是會被刷新,會被重新載入數據。
不過,在PowerBI里,我們還可以借助一個函數UNION來實現表格的合並。並且UNION可以幫助我們實現增量刷新的目的。
導入數據后,回到PowerBI操作界面,點擊工具欄里的”新建表”,使用DAX函數創建一個新的表格 Orders。
這里用到的DAX表達式為:
Orders =UNION('Orders 2017';'Orders 2018';'Orders 2019')
新表格創建成功后,來到關系視圖,可以使用新創建的表格建立需要的關聯關系。
點擊刷新數據驗證一下三張Orders表格里,是否只有Orders2019被刷新。
到這里,我的小技巧就施展完成了。
最后,大家別忘了在表格列表里隱藏 Orders 2017, Orders2018, Orders 2019 這三張表格,假裝什么都沒有發生過一樣。
或許看完之后你會說,這根本就不算真正的增量刷新。是的,這里我只是在”模仿”增量刷新,在PowerBI Desktop中只加載需要更新的表,同樣可以縮短刷新的時間,這不就是我們期望的結果么?
利用這個方法確實部分解決了我的困擾。你也可以順着這個思路,單獨分出近一個季度,近一個月的數據,然后只刷新這部分數據。
感謝大家的閱讀。
/推薦閱讀/