2016-04-28 379 views
0

我有時會寫一個DAX公式,這對我的機器來說很重。它甚至可能需要超過10 GB的內存,並阻止我的工作很長一段時間。此時Excel完全沒有響應。如何在Power Pivot中停止計算?

是否有暫停計算的選項,以便我可以在不關閉Excel文件的情況下重寫公式?到目前爲止,我所知道的唯一解決方案是從任務管理器關閉Excel,但後來我失去了未保存的工作。

回答

0

最好的辦法是通過聚合(使用Power Query - Group By)或者將數據分成不同的工作簿(例如每年一個工作簿)來減少模型中的數據。

這樣做會降低計算所需要的和您的工作簿希望不會崩潰內存/ CPU ...

否則......

您可以功率樞紐內設置計算爲手動模式(設計功能區>計算選項)。有了這個,你可以建立你的措施等沒有Power Pivot/Excel計算每個變化。

如果您在更改度量後刷新了很多大型數據透視表,這可能會導致Excel崩潰。安裝OLAP數據透視表工具擴展(http://olappivottableextend.codeplex.com/) - 這允許您禁用在Pivot表上發生的自動刷新,無論何時您在Power Pivot中更改某些內容。

編輯:

的PowerPivot讓你取消計算領域正在作出的計算。一旦你改變公式後回車,你可以使用Esc鍵來停止計算。

同樣是不可能的措施。

從您的意見,我會認爲你的模型有其他錯誤,但會建議檢查,首先... 100K行應該是非常容易的Powerpivot,不應該導致10GB的內存被吃掉。

+0

謝謝你的回答,但這不會解決我的問題......給你一個具體的例子:我一直在處理一個大約有100k記錄的數據集,並使用一個CALCULATE函數來計算滿足一定條件的列。一切工作正常,2篩選條件(1-2秒內計算),但當我添加第三個,文件總是崩潰......基本上我需要一個等同於停止SQL數據庫上的查詢執行,這不需要我通過任務管理器關閉Excel。 – Amade

+0

100k行?有趣... 你可以發佈你創建的2個過濾器和3個過濾器CALCULATE()函數的例子嗎? – dijksterhuis

+0

我沒有這個功能了。我只能告訴你,這是一個只有唯一值(日期/時間)的列。但是,這不是我的問題的重點。我知道解決方法。我只是想知道,如果運行時間過長,是否有「殺死」計算的選項。 – Amade

2

我會建議嘗試DAX Studio開發和排除措施的故障。 DAX Studio既是一個獨立的工具,也是一個Excel插件,允許您使用語法突出顯示,服務器計時,查詢計劃等查詢Power Pivot(或SSAS)模型。在這種情況下,如果度量導致資源過度使用並凍結機器,您可以結束DAX Studio進程而不會崩潰Excel。如果您的度量很複雜,可以將其分解爲更小的部分,並在DAX Studio中輸出結果以可視化中間步驟。

下面顯示的是使用兩個過濾器計算測量值的示例。該度量嵌入到DAX查詢中,並且結果將是一個單一的值,就像您在Power Pivot度量窗格中看到的一樣。

EVALUATE 
ROW (
    "Measure Result", CALCULATE (
     COUNTROWS (Registrations), 
     'Vehicle Model'[Vehicle Year] = "2015", 
     'Vehicle Model'[Type] = "TRUCK" 
    ) 
) 

你可以找到關於如何使用DAX工作室在SQLBI資源。

+0

謝謝克里斯試圖幫助,但這並沒有回答我的問題......我特別感興趣的是一個選項,'殺死'長期運行計算而不關閉而不是查詢優化方法(這是一個單獨的主題)。順便說一句,我同意,DAX工作室是一個偉大的工具,並使用它以及:) – Amade

+0

我不知道如何取消Power Pivot/Excel中的計算,這就是爲什麼我建議使用DAX Studio作爲避免殺死Excel的方法。想想就像犧牲DAX Studio來備用Excel一樣:)這不是最優雅的解決方案,只要按下escape就可以取消度量計算,那肯定會更好。 –