2012-04-10 52 views
2

我有一個具有以下三個維度的立方體:日期,時間和移位。我有一個叫做[Pieces Succeeded]的測量方法,並且我想要一個Shift按小時計算的[Pieces Succeeded]的總數。 Shift可以跨越一天以上,因此在下面的查詢中,我做了Date和Time維度的交叉連接。MDX查詢與跨連接維度上運行總計

with 
member [Measures].[Pieces Succeeded Running Total] as 
    sum([Time].[Hierarchy].[Hour].FirstMember:[Time].[Hour].CurrentMember, [Measures].[Pieces Succeeded]) 
select 
    { [Measures].[Pieces Succeeded], [Measures].[Pieces Succeeded Running Total] } on columns, 
    nonempty(crossjoin([Date].[Month Hierarchy].[Day].Members, [Time].[Hierarchy].[Hour].Members)) on rows 
from 
    [OEE] 
where 
    [Shift].[Month Hierarchy].[Shift].&[501] 

其中給出了以下結果:

Date  Hour Pieces Succeeded Pieces Succeeded Running Total 
03 Apr 2011 22 6393    6393 
03 Apr 2011 23 6424    12817 
04 Apr 2011 00 3816    3816 
04 Apr 2011 01 5510    9326 
04 Apr 2011 02 2090    11416 
04 Apr 2011 03 7489    18905 
04 Apr 2011 04 7307    26212 
04 Apr 2011 05 5706    31918 

我怎麼會去獲取和對crossjoined集工作,使運行總計可跨天?

謝謝

+0

好吧,我想通了,後來將發佈我的解決方案。 (因爲我的代表不到100,所以SO讓我等了8個小時) – 2012-04-10 15:46:40

回答

2

我花了整整一天的時間,終於弄明白了。我想這可能是對別人有價值的,所以這裏的解決方案:

with 

set DateHours as 
    nonempty(crossjoin([Date].[Month Hierarchy].[Day].Members, [Time].[Hierarchy].[Hour].Members), [Measures].[Pieces Succeeded]) 

member [Measures].[Rank] as 
    rank(([Date].[Month Hierarchy].CurrentMember, [Time].[Hierarchy].CurrentMember), DateHours) 

member [Measures].[Running Pieces Succeeded] as 
    iif([Measures].[Rank] = 1, [Measures].[Pieces Succeeded], sum(head(DateHours, [Measures].[rank]), [Measures].[Pieces Succeeded])) 

select 
    { [Measures].[Pieces Succeeded], [Measures].[Running Pieces Succeeded] } on columns, 
    non empty { DateHours } on rows 

from 
    [OEE] 

where 
    [Shift].[Month Hierarchy].[Shift].&[501]