Power BI數據集內存挑戰—節省40%以上!


是不是常常有企業在和一些大數據集的客戶合作的時候,我們的BI伙伴經常會面臨這么一個挑戰:我們是否有比較有效的的方法減少和降低內存的消耗,同時仍然可以看到應有的指標。

 

01接受挑戰!

 事實上,我們已經采取過多種優化措施:減少基數,刪除不需要的列,並確保所需的數據加載到數據集中等。但即使我們這樣做了,我們的數據集大小仍在Azure Analysis Services中消耗90GB的內存,所以並沒有太大起色。

那還有沒有更好的辦法呢?下面跟大家分享一個技巧,我們可以通過以下步驟將數據集的大小縮減到37GB!

 

02原始數據集大小

 如圖所示,我們原來的PBIX原始大小為5.01MB。

 

 

當運行這個數據集時,它消耗了大約20MB的內存。

 

03使用十進制減少數據集大小

 我們通過閱讀有關數據類型的文檔時,可以將數據類型從“十進制數”更改為“固定十進制數”,這樣可以節省數據集的大小。

我們把數據類型變為固定小數,保留4位小數。

我們確保如果將列中的值更改為僅保留小數點后4位,總數將保持不變。

如下所示,將列SalesAmount_EUR的數據類型設置為“十進制數”。

 

接下來,我們保留4位小數的值,如下所示。

 

現在,當我們保存PBIX時,它從5.01MB變為4.18MB。

 

這樣可以節省大約16%,最初我們認為這也還不錯。

但是我們覺得應該還有辦法能讓數據集內存優化到更小,是什么呢?我們繼續看下文。

 

 

04使用整數使數據集真正小而有效

 有這么一個想法:如果現在可以將SalesAmount_EUR拆分到單獨的列中怎么辦?

那意味着我們可以兩列整數。不僅如此,十進制值的基數也會大大減少。

我們立即開始嘗試,並使用TSQL(你可以再次使用Power Query)將列拆為2列。但現在有個問題要解決的是:當我有一個負值時,要保證我的拆分列也為負!

拆分數據后,要確保拆分列的數據類型都設置為“整數”。

 

 

做到這一步,真心希望這可以滿足我們的需求:大大節省數據集和內存大小。

當我保存文件時,它已降至1.75MB。

 

 

下面我們通過一個Power BI視覺文件,來測試對比看看我們到底可以節省了多少內存資源。

 

 

如上所示,數據集的大小減少了65%。

內存大小也從19MB減少到2.1MB。

現在,我需要在DAX度量中添加一些其他邏輯以將這兩列組合在一起以表示相同的值。

我們也對此進行了測試,並且由於數據集的大小要小得多,因此結果是數據集的大小,數據的大小和列的層次結構的大小都變小,這意味着超快速的SSAS引擎可以更快地處理數據。

這是我們如何一次將這些值重新組合在一起

1

2

3

Sales Amount EUR =

SUM ( Data[SalesAmount_EUR] )

            +   ( DIVIDE ( SUM ( 'Data'[SalesAmount_EUR_Cents] ), 10000 ) )

 

05結論

正如我們所展示的,有時可以使用一些非常有創意的方法來減少數據集的大小,你們覺得呢?

 

技術交流

1.Power BI免費下載:http://www.yeacer.com/

    Microsoft Power BI Desktop中文最新版:下載地址

2.歡迎加入的Power BI技術群,目前正在學習階段,有興趣的朋友可以一起學習討論。 

   Power Data技術交流群:702966126 (驗證注明:博客園Power BI) 

   更多精彩內容請關注微信公眾號:悅策PowerBI          


如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,作者博客:https://www.cnblogs.com/yeacer/ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM