如何在ssas 2012中获得立方体中度量的几何平均值

时间:2014-11-19 11:25:21

标签: ssas

我的立方体中有一个名为StayInHospital的措施。我想计算几何平均数   对于这个措施。 请参阅示例

Day ,   AccoutNumber , Stayinhospital , VisitCount

1   ,        A1      ,       2         ,   1
1   ,        A2      ,       4         ,   1
1   ,        A3      ,       8         ,   1

Stayinhospital测量的第1天的上述示例的几何平均值=(2 * 4 * 8)^ 1/3

                                                           =4

我在计算成员

中完成了以下计算
  Measures.WeightLog as log(StayInHospital)
  Measures.ProductOfWeights as 10^Measures.WeightLog
  Measures.GMLOS as (Measures.ProductOfWeights)^(1/(Measures.VisitCount))

我没有得到预期的结果。

它将StayInHospital值相加而不是相乘  请帮忙。

2 个答案:

答案 0 :(得分:1)

计算成员公式在聚合后应用。因此,最好的解决方案是在数据加载期间计算对数,例如: G。作为数据源视图中的命名计算,例如: G。使用表达式

添加计算
log(StayInHospital) / log(10.0)

假设您的关系列名为StayInHospital。这个表达式考虑到Log是基础e而不是基础10,并将其转换为基数10的对数。

然后,根据此命名计算定义一个正常的可求和度量,名为e。 G。 LogStayInHospital。

最后,将您的度量GMLOS定义为

( 10 ^ Measures.LogStayInHospital ) ^ (1 / Measures.VisitCount)

或等同于

10 ^ (Measures.LogStayInHospital / Measures.VisitCount)

如果一切正常,并且您不再需要它进行调试,则可以使度量LogStayInHospital不可见。

答案 1 :(得分:0)

我不知道你的dimensions是什么样的,所以我认为AccountNumber是维度Account中的一个属性。

现在将[Measures].[WeightLog]更改为:

MEMBER [Measures].[WeightLog] AS Sum([Account].[AccountNumber].[AccountNumber].MEMBERS, Log([Measures].[StayInHospital]))

这应计算每个帐户的Log,然后Sum结果。

Mosha Pasumansky's blog中你也可以读到这个(他使用了DESCENDANTS函数,但原理是一样的。