2012-04-10 56 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]