仅适用于非空-SSAS MDX的平均值

仅适用于非空-SSAS MDX的平均值,ssas,mdx,average,Ssas,Mdx,Average,对于一天(可能有几个日期时间记录),我想创建一个第二个度量值,根据我的第一个度量值计算平均值,仅计算非空值。我尝试了以下方法: "CREATE MEMBER CURRENTCUBE.[Measures].[M2] AS AVG([Measures].[M1]), VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'DATA' ;" 但是SSAS AVG函数似乎返回了一个总和: 日期时间“M1” 2016年1月1日12:10“10” 1/1/16 13:10“

对于一天(可能有几个日期时间记录),我想创建一个第二个度量值,根据我的第一个度量值计算
平均值
,仅计算
非空值。我尝试了以下方法:

"CREATE MEMBER CURRENTCUBE.[Measures].[M2] 
AS AVG([Measures].[M1]),
VISIBLE = 1 ,  ASSOCIATED_MEASURE_GROUP = 'DATA' ;"
但是SSAS AVG函数似乎返回了一个总和:

日期时间“M1”
2016年1月1日12:10“10”
1/1/16 13:10“12”
2016年1月1日14:10
1/1/16 15:10“9”
2016年1月1日16:10
1/1/16 17:10“21”
1/1/16 18:10
2016年1月1日19:10“2”


非空度量值的平均值(10+12+9+21+2)/5非空值=10,8

您需要计算集合的平均值,因此需要为
AVG
函数引入第一个参数

从这里开始:

这就是定义:

平均值(集合表达式[,数值表达式])

尝试以下方法,而不是
AVG([Measures].[M1])

AVG(
 nonempty([Date].[Calendar].[Date], [Measures].[M1])
 ,[Measures].[M1]
)
…但我相信AVG函数会为您处理空值。因此,以下内容应该是等效的:

AVG(
  [Date].[Calendar].[Date]
 ,[Measures].[M1]
)

您需要计算集合上的平均值,因此需要为
AVG
函数引入第一个参数

从这里开始:

这就是定义:

平均值(集合表达式[,数值表达式])

尝试以下方法,而不是
AVG([Measures].[M1])

AVG(
 nonempty([Date].[Calendar].[Date], [Measures].[M1])
 ,[Measures].[M1]
)
…但我相信AVG函数会为您处理空值。因此,以下内容应该是等效的:

AVG(
  [Date].[Calendar].[Date]
 ,[Measures].[M1]
)

如果您想要平均每日值,那么@whytheq在MDX中展示了一种方法。但我相信你想要一个简单的平均值。在SSAS中实现这一点的正确方法是创建一个与SQL列M1绑定的度量值M1,其AggregateFunction=Sum(您已经有了)和该度量值组中SQL列M1上的第二个度量值M1_Count,其AggregateFunction=Count

然后创建一个计算的度量值:

CREATE MEMBER CURRENTCUBE.[Measures].[M1 Avg] as
IIF([Measures].[M1_Count]=0,null,[Measures].[M1]/[Measures].[M1_Count]);

如果您想要平均每日值,那么@whytheq在MDX中展示了一种方法。但我相信你想要一个简单的平均值。在SSAS中实现这一点的正确方法是创建一个与SQL列M1绑定的度量值M1,其AggregateFunction=Sum(您已经有了)和该度量值组中SQL列M1上的第二个度量值M1_Count,其AggregateFunction=Count

然后创建一个计算的度量值:

CREATE MEMBER CURRENTCUBE.[Measures].[M1 Avg] as
IIF([Measures].[M1_Count]=0,null,[Measures].[M1]/[Measures].[M1_Count]);

我提交了一个不同的答案,我认为这是一个更好的答案。@Greggallowy一点也不担心:我不允许修改我们的立方体设置或设计,所以我部分猜测了上述内容。我提交了一个不同的答案,我认为这是一个更好的答案。@Greggallowy一点也不担心:我不允许修改我们的立方体设置或设计,所以我部分猜测了上述内容。你好,Greggallowy,我在发帖前尝试过这个解决方案,但没有达到预期的效果。使用SUM(M1)/COUNT(Rows)计算的平均值考虑M1的空值,其中我只想保持为非空ones@SESAMAREVA对的这就是为什么你需要一个M1_计数度量,它是特定列的s计数。使用SUM(M1)/COUNT(Rows)计算的平均值考虑M1的空值,其中我只想保持为非空ones@SESAMAREVA对的这就是为什么需要一个M1_计数度量,它是该特定列的s计数。有没有办法获得M1的非空值的数量?在我的日期集示例中,预期答案是5有没有办法获得M1的非空值的数量?在我的日期设置示例中,预期答案是5