创建 MDX 以除以每个月的两个度量,然后对所有月份求和
Create MDX to Divide two measures for each month and then sum the all of the months
我有一个多维立方体,它需要一个我不确定如何构建的自定义度量。
该数据如下所示:
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(EventType 1 的计数和 EventType 2 的计数)而 2/1/2016 将是 1/2=0.5,因此两个月的结果度量值为 1 +0.5=1.5。非常感谢任何帮助。
假设您有一个 Date 维度,其属性称为 Month。假设您有一个 EventType 维度。假设您的度量值组中有一个名为 Cnt 的计数度量值。这是您还需要做的事情。
首先,转到 DSV 并向事实 table 添加一个新的计算列,它称为 NullInt 并且是以下表达式:
强制转换(null 为 int)
然后在该列的度量组中创建一个新的 Sum 度量,并将该度量称为 My Rollup。在 Source 属性 下,将 NullHandling 更改为 Preserve 以便它从 null 开始。
为了解释我们这样做的原因,物理度量的范围分配将汇总。 (如果您在每个月的粒度上为物理度量分配一个值,那么它将汇总到总计。)但是对计算度量的范围分配不会汇总。
然后在您的 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 版本是带有最新服务包或更新版本的 AS2012,则它可能具有 DIVIDE
功能。但如果没有,您总是可以用老式的方式进行除法,如 IIF(denom=0,null,num/denom)
.
我有一个多维立方体,它需要一个我不确定如何构建的自定义度量。
该数据如下所示:
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(EventType 1 的计数和 EventType 2 的计数)而 2/1/2016 将是 1/2=0.5,因此两个月的结果度量值为 1 +0.5=1.5。非常感谢任何帮助。
假设您有一个 Date 维度,其属性称为 Month。假设您有一个 EventType 维度。假设您的度量值组中有一个名为 Cnt 的计数度量值。这是您还需要做的事情。
首先,转到 DSV 并向事实 table 添加一个新的计算列,它称为 NullInt 并且是以下表达式: 强制转换(null 为 int)
然后在该列的度量组中创建一个新的 Sum 度量,并将该度量称为 My Rollup。在 Source 属性 下,将 NullHandling 更改为 Preserve 以便它从 null 开始。
为了解释我们这样做的原因,物理度量的范围分配将汇总。 (如果您在每个月的粒度上为物理度量分配一个值,那么它将汇总到总计。)但是对计算度量的范围分配不会汇总。
然后在您的 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 版本是带有最新服务包或更新版本的 AS2012,则它可能具有 DIVIDE
功能。但如果没有,您总是可以用老式的方式进行除法,如 IIF(denom=0,null,num/denom)
.