2013-10-05 103 views
1

我在查詢中有兩個需求 首先:基於我的measure.product銷售較高的產品列表應該首先出現。優化MDX查詢

ProductCode Sales      
----------- ------------            
123   18  
332   17  
245   16   
656   15  

第二:對我的預分類產品列表有累積和。

WITH 
SET SortedProducts AS 
    Order([DIMProduct].[ProductCode].[ProductCode].AllMEMBERS,[Measures]. [Sales],BDESC) 
MEMBER [Measures].[ACC] AS 
Sum 
    (
     Head 
     (
     [SortedProducts],Rank([DIMProduct].[ProductCode].CurrentMember,[SortedProducts])  
    ) 
    ,[Measures].[Sales] 
    ) 
SELECT 
     {[Measures].[Sales] ,[Measures].[ACC]} 
    ON COLUMNS, 
     SortedProducts 
    ON ROWS 
FROM [Model] 

但它需要大約3分鐘的運行,如何優化我的代碼或者是正常的任何建議:

ProductCode Sales  ACC      
----------- ------------ ----            
123   18   18 
332   17   35 
245   16   51 
656   15   66 

我爲了實現上述目標,下面寫道:MDX?

我有9635種產品在總

回答

0

如果你對谷歌的快速調查,有不同的方法去實現它(很多答案在這裏也)。

這就是說,我會給一個嘗試這種不同的方式來計算你的運行總計

MEMBER [Measures].[SortedRank] AS Rank([Product].[Product].CurrentMember, [SortedProducts]) 
MEMBER [Measures].[ACC2] AS SUM(TopCount([SortedProducts], [Measures].[SortedRank]) ,[Measures].[Internet Sales Amount]) 

我不知道是否TopCount會爲你的情況下執行速度比Head,但例如您的查詢上我在AdventureWorks cube上的測試機器使用Head或TopCount函數的同一時間。

希望這會有所幫助

+0

感謝您的回答,但它與我自己的查詢一樣快。 – Roxana