2016-08-19 52 views
0

我有一个多维立方体,需要一个自定义度量,我不知道如何构建。创建MDX为每个月划分两个度量,然后总结所有月份

这数据看起来是这样的:

MemberID-----Date-------EventType 
1--------------1/1/2016-------1 
2--------------1/1/2016-------2 
3--------------2/1/2016-------1 
2--------------2/1/2016-------2 
4--------------2/1/2016-------2 

有一个在立方体的计数措施,但如果需要的话可以加入其他人。我需要创建一个度量,使用用户应用的任何过滤器,然后按月对EventType(仅限1和2)进行计数,将EventType 1的结果计数除以EventType 2的计数(单独为每个月),最后总结每月的结果。例如1/1/2016将是1/1 = 1(事件类型1的计数和事件类型2的计数)并且2/1/2016将是1/2 = 0.5,因此两个月的结果测量值将是1 + 0.5 = 1.5。任何帮助是极大的赞赏。

回答

1

我们假设您有一个日期维度,其中包含一个名为Month的属性。假设您有一个EventType维度。假设您在您的度量组中有一个称为Cnt的计数度量。这是你需要做的事情。

首先,转到DSV和一个新的计算列添加到被称为NullInt,是下面的表达式事实表: 投(null作为INT)

然后在你的度量创建一个新的点心措施将该栏分组并将其称为“我的汇总”。在Source属性下,将NullHandling更改为Preserve,以便从零开始。

为了解释我们为什么要这样做,一个物理测量的范围分配会聚集起来。 (如果您为每个月的谷物分配一个物理量的值,则它会汇总到总量。)但是,计算的量度的范围分配不会卷起。

然后在你的MDX脚本中加入以下计算:

scope([Date].[Month].[Month].Members); //calculate at the month level then rollup 
    [Measures].[My Rollup] = DIVIDE(
    ([Event Type].[Event Type].&[1],[Measures].[Cnt]), 
    ([Event Type].[Event Type].&[2],[Measures].[Cnt]) 
    ); 
end scope; 

请注意,您的SSAS版本可能有DIVIDE功能,如果它是AS2012与最新的服务包或更新。但如果没有,你总是可以按照老式的方式进行划分,如IIF(denom=0,null,num/denom)