你常常已創建具有許多可視化和計算的Power BI報告,但速度很慢!最慢的部分是報告頁面,其中包含矩陣或表格可視化!視覺為何如此緩慢?這是Power BI中的控件問題嗎?或Power BI問題呢?或者與建模和計算有關?在本文中,將解釋為什么Power BI報告中的矩陣和表可能會很慢,以及你應該如何處理它?所以今天這篇文章就可以給你一半的答案!
度量值
大多數情況下,當你在矩陣或表格中使用度量值時,會出現性能問題。話雖如此,但感覺我已經看到甚至在表格或矩陣視覺中顯示列的模型很慢,並且大部分時間的原因是模型的設計和雙向關系。
度量值如何工作
度量值是你常用在Power BI中創建的三種計算類型之一。另外還有兩種類型的計算是:計算表和計算列。我們來看看度量值的計算方法。
度量值是即時計算的
度量值不是預先計算的值。度量值是Power BI中唯一未預先計算的計算類型。測量計算將立即發生,當你更改切片器中的值,過濾或單擊視覺以突出顯示某些內容時。像這樣的操作,每次互動都會觸發對度量值的計算。
度量值消耗CPU
在計算度量值時,你有時可能會注意到(如果計算需要很長時間)CPU使用率突然上升到100%,並且在完成計算后會再次下降。
度量值占用內存
度量主要是消耗CPU,但是,它們有時也消耗內存。我們考慮以下計算:
MINX ( Customer, [Sum of Sales Amount] )
上面的計算是使用迭代器,迭代器的工作方式是:SUMX將遍歷Customer表中的每一行,計算每行的表達式(Sales of Amount),並將其存儲在臨時內存中,然后經過所有行后,它把最終結果輸出。
如你所見,存在臨時內存消耗。盡管度量本身並未存儲在任何位置,並且不會占用內存來存儲最終輸出,但臨時計算可能會有內存消耗。這種內存消耗不僅僅發生在迭代器上。還有其他可能導致此問題的場景函數和表達式。
為什么表和矩陣視覺上的度量值可能會很慢
度量值是在運行中計算的,它們消耗CPU的處理能力,也消耗臨時存儲器,因此很明顯測量將花費一些時間來進行計算。但是,你可能會首先注意到Table和Matrix的性能問題,為什么?事實是,度量是根據過濾器上下文中的值組合計算的(對計算度量輸出有影響的值集)。
作為一個例子,在下表中,每次我們在切片器中選擇一個值,同時進行六次計算!表格中每行的一個計算:
你可能想知道為什么六次,行數是五。請注意,總行只是另一個計算,在EnglishEducation字段上沒有任何過濾器的計算。因此,每次單擊“Color”時,都會發生六次計算。讓我們檢查矩陣中的另一個例子:
這次除了六行之外,我們還有四列,因此計算發生6 * 4 = 24次。每次在切片機中選擇顏色值時,都會進行24次計算!如果該矩陣有許多行和更多列,該怎么辦:
現在有1.8萬行記錄,和九列,每當你更改切片器中的值時,這將超過160,000次計算!
現在讓我們假設每次計算需要1秒鍾(這並不多),它消耗1MB內存。對於160,000計算,你可以了解它可以花多長時間,以及多少內存。事實上,Power BI內存引擎會進行大量的並行處理和壓縮等工作。因此,你不會產生160GB內存消耗或45分鍾等待此表,這樣會少得多。但是,盡管存在壓縮級別,仍會存在無法並行處理的部分或消耗內存的部分。
當計算在卡片圖中進行時,它只計算一次。當它出現在柱形圖或條形圖中時,它只發生在幾個項目上(因為你不會在這些視覺效果中放置一個包含數千個值的字段)。但是,當你使用表格,尤其是矩陣視覺效果時,你希望顯示詳細信息,並帶來包含大量值的字段。因此,你最終會進行數千甚至數百萬次計算,這就是你的報告變慢的原因。
當你將度量值計算放在矩陣或表格中時,這些視覺效果中字段的詳細上下文會導致數千甚至數百萬次計算。
請注意,對於簡單的計算或用正確設計的模型編寫的計算,這仍然會超快。即使有很多記錄和專欄。挑戰在於測量計算本身表現不佳。
現在你已經意識到為什么你的表格或矩陣視覺效果很慢,讓我們看看有什么方法可以讓它變快。關於如何解決,我們將在下一篇具體講我們給出的解決方案!
技術交流
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/