2012-09-18 44 views
1

我有一個具有多個層次結構的日期維度(與大多數情況一樣)。我有一些計算爲運行總和的度量,如下面的示例所示。與多個層次結構一起運行總計

AGGREGATE([Date].[Calendar].[Date].Members.Item(0):ClosingPeriod([Date].[Calendar].[Date], [Date].[Calendar].CurrentMember), [Measures].[Number Of Contracts])

我的問題是,運行總計僅適用於日曆層次結構(其中按年,月,日,然後休息都記錄下來)。如果我使用Weeks hiearchy(每個星期將事情分解),則計算不起作用,它每週只顯示相同的數字。

在MDX中是否有一個高性能的方法來使多個層次結構的運行總體工作?我迄今爲止嘗試過的一切都非常緩慢。

回答

2

一個可能的解決方案如下。通過使用EXISTING關鍵字,可以獲取當前上下文中存在的所有Date成員的列表,然後使用這些日期來定義聚合數據的範圍。根據我的初步測試,性能與問題中的計算類似。

AGGREGATE(NULL:TAIL(EXISTING [Date].[Date].[Date].Members).Item(0), [Measures].[Number Of Contracts])

另一個,可能更高性能,溶液在http://www.purplefrogsystems.com/blog/2010/08/mdx-calculated-member-spanning-multiple-date-dimensions/說明。它通過計算所有適用層次的範圍,然後將這些層次交叉在一起來解決問題。

AGGREGATE({ NULL:[Date].[Calendar].CurrentMember } * { NULL:[Date].[Week].CurrentMember })

這種解決方案的唯一的缺點是,如果你有沒有海誓山盟之間的屬性關係,很多層次可以變得冗長。

+0

+1:非常有用。 –

+0

工程就像一個魅力。 – RollTide