我有一個非常困難的時間,Excel與數據透視表交互時非常慢。添加/刪除字段,更改過濾器或切片器,都需要幾分鐘的時間才能響應。緩慢的Excel數據透視表MDX?
似乎生成的MDX效率極低。我可以理解他們必須動態生成MDX,並且必須支持數據透視表的許多功能,但速度慢100倍是可笑的。
當他們產生MDX上的行或列字段,他們使用DrilldownLevel(... [屬性維度]。[縣])
我不知道是什麼的Excel的更復雜的方法的目的是的,但我希望在某些地方有一些選項可以取消選中,以便Excel不需要使用DrilldownLevel函數。
取而代之的是,我通常省略Drilldownlevel函數,只是做[Property Dimension]。[縣] 。[縣]來訪問屬性。
對於相同結果集的查詢需要5分鐘的Excel MDX時間,並且使用我的MDX時間少於5秒鐘。
我已經驗證了慢速並不是Excel渲染/格式化結果的問題,因爲我使用了Excel使用的MDX,並直接在SSMS中運行它以驗證計時。我可以查看服務器上的任務管理器,並在處理結果時觀察CPU攪動。
請注意,我不會責怪服務器,因爲我可以創建運行速度極快並提供相同結果的MDX查詢。
我怎樣才能讓Excel生成更高效的MDX?我正在使用Excel 2010.
我聽說powerpivot生成更高效的MDX,但是Powerpivot在SSAS之上不可用,因爲它不利用SSAS多維數據集。因此,爲什麼在SSAS之上的Powerpivot不起作用的短暫咆哮。如果您將數據從SSAS導入powerpivot,您實際上所做的就是執行巨大的交叉連接,將數據從SSAS遷移到Powerpivot表中。如果你已經嘗試過,你會發現它會生成字段名稱/標籤,例如「Property DimensionCountyCounty Name」......哇,真的嗎?然後,您只需使用本地Powerpivot的OLAP引擎處理數據,並依靠具有64位操作系統的客戶端計算機來處理合理大小的數據集。這就好像您只是削減了SSAS,將您在構建複雜的OLAP數據庫和所有元數據,計算,聚合等方面的努力拋出了頭緒。使用SSAS的一半原因是爲了能夠彙總粒度數據然後再返回給客戶端,以便客戶端不需要64位操作系統,並且不需要客戶端上的大量資源。我非常努力地使SSAS的動力樞軸可用,但是在嘗試了幾種方法並與用戶來回之後,它確實沒有接近可用的地方。不要敲Powerpivot,因爲我發現它在許多其他情況下非常有用,但是如果您的SSAS多維數據集是您系統的重要組成部分(即計算,彙總服務器端的大量記錄等),那麼powerpivot似乎是錯誤的選項。
這裏是我的查詢的示例:
SELECT
NON EMPTY CrossJoin(
{[Department Dimension].[Name].[Name]},
{[Finance Month].[Report Year].[Report Year]}
)
ON COLUMNS ,
CrossJoin(
{[Department Finance Line Type Dimension].[Display Order].[Display Order] },
{[Department Finance Line Type Dimension].[Line Number].[Line Number]},
{[Department Finance Line Type Dimension].[Display Name].[Display Name]}
)
ON ROWS
FROM
(
SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [HYP Data View]
)
WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet],
[Measures].[Amount]
) CELL PROPERTIES VALUE
及以下的Excel生成的內容。我實際上已經刪除了Excel查詢的其他幾個方面,因爲我試圖簡化它來確定是什麼罪魁禍首。這是查詢在運行緩慢時的樣子,然後下一步我刪除了DrilldownLevel並將其替換爲[All]。[屬性名稱]它開始運行得快得多。
非常非常慢查詢:
SELECT
NON EMPTY CrossJoin(
{DrilldownLevel({[Department Dimension].[Name].[All]})},
{DrilldownLevel({[Finance Month].[Report Year].[All]})}
)
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS ,
CrossJoin(
{DrilldownLevel({[Department Finance Line Type Dimension].[Display Order].[All] })},
{DrilldownLevel({[Department Finance Line Type Dimension].[Line Number].[All]})},
{DrilldownLevel({[Department Finance Line Type Dimension].[Display Name].[All]})}
)
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS
FROM (
SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [Afr Data View]
)
WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet],
[Measures].[Amount]
) CELL PROPERTIES VALUE
爲什麼它需要DrilldownLevel(... [全部])?有沒有一個選項可以翻轉來讓Excel不生成這部分查詢以便它運行得更快?
可能是交叉連接和下鑽層級,因爲下鑽層級功能不夠慢。交叉連接同一維度的不同層次可能非常耗時(您需要在所有組合上執行自動存在)......並不能解決您的問題,但可能有助於您理解 – ic3
屬性層次結構和層次結構的速度是否緩慢? –