2017-03-24 84 views
0

我有一個歷史上在25秒內運行的大型MDX查詢;這很好。我最近做了如下所述的更改,現在運行時間超過了90秒。優化SUM MDX

我擔心如果我需要執行類似的過濾器,這隻會加劇問題。有關如何更有效地爲MDX執行此類過濾器的任何建議?

// My simple aggregation of all hours runs in 25 seconds 
MEMBER [Measures].[Calc_TotalHours] AS 
    ([Measures].[PostedHours] + [Measures].[UnpostedHours]) 

// The same aggregation that excludes a certain type of hours 
MEMBER [Measures].[Calc_TotalHours] AS 
    SUM (-{ [Activity].[ProjectCategoryName].&[Overtime] } 
      , ([Measures].[ActualHours] + [Measures].[TimeSheetHours_Unposted]) 
     ) 

我在想,如果SUM是錯誤的功能在這裏使用?

回答

2

你說得對,Sum()函數對大集合很重。嘗試重用預彙總所有成員:

([Activity].[ProjectCategoryName].[All],[Measures].[ActualHours]) 
+ ([Activity].[ProjectCategoryName].[All],[Measures].[TimeSheetHours_Unposted]) 
- ([Activity].[ProjectCategoryName].&[Overtime],[Measures].[ActualHours]) 
- ([Activity].[ProjectCategoryName].&[Overtime],[Measures].[TimeSheetHours_Unposted]) 
+0

非常感謝Danylo!這已經解決了我的問題,並教會了我一些新的東西 - 雙重打擊! – wh4tshisf4c3