仅针对 NonEmpty 的平均值 - SSAS MDX
Average only for NonEmpty - SSAS MDX
一天(可能有多个日期时间记录)我想创建一个第二个度量,根据我的第一个度量计算一个 AVG
仅用于 nonempty
值。我尝试了以下方法:
"CREATE MEMBER CURRENTCUBE.[Measures].[M2]
AS AVG([Measures].[M1]),
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'DATA' ;"
但是 SSAS AVG 函数似乎 return 我一个总和:
日期时间"M1"
16 年 1 月 1 日 12:10“10”
16 年 1 月 1 日 13:10“12”
2016 年 1 月 1 日 14:10
16 年 1 月 1 日 15:10“9”
2016 年 1 月 1 日 16:10
1/1/16 17:10“21”
2016 年 1 月 1 日 18:10
2016 年 1 月 1 日 19:10“2”
非空测量值的平均值 (10+12+9+21+2)/5 个非空值 = 10,8
您需要计算集合的平均值,因此您需要向 AVG
函数引入第一个参数。
从这里开始:
https://msdn.microsoft.com/en-us/library/ms146067.aspx?f=255&MSPPError=-2147217396
这是定义:
Avg( Set_Expression [ , Numeric_Expression ] )
而不是 AVG([Measures].[M1])
试试这个:
AVG(
nonempty([Date].[Calendar].[Date], [Measures].[M1])
,[Measures].[M1]
)
...但我相信 AVG 函数会为您处理空值。所以下面应该是等价的:
AVG(
[Date].[Calendar].[Date]
,[Measures].[M1]
)
如果您想要平均每日价值,那么@whytheq 展示了一种在 MDX 中实现的方法。但我相信你想要一个简单的平均值。在 SSAS 中执行此操作的正确方法是使用 AggregateFunction=Sum (您已经拥有)创建一个与 SQL 列 M1 关联的度量 M1,并在 SQL 列 M1 上创建第二个度量 M1_Count在具有 AggregateFunction=Count.
的度量组中
然后创建计算度量:
CREATE MEMBER CURRENTCUBE.[Measures].[M1 Avg] as
IIF([Measures].[M1_Count]=0,null,[Measures].[M1]/[Measures].[M1_Count]);
一天(可能有多个日期时间记录)我想创建一个第二个度量,根据我的第一个度量计算一个 AVG
仅用于 nonempty
值。我尝试了以下方法:
"CREATE MEMBER CURRENTCUBE.[Measures].[M2]
AS AVG([Measures].[M1]),
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'DATA' ;"
但是 SSAS AVG 函数似乎 return 我一个总和:
日期时间"M1"
16 年 1 月 1 日 12:10“10”
16 年 1 月 1 日 13:10“12”
2016 年 1 月 1 日 14:10
16 年 1 月 1 日 15:10“9”
2016 年 1 月 1 日 16:10
1/1/16 17:10“21”
2016 年 1 月 1 日 18:10
2016 年 1 月 1 日 19:10“2”
非空测量值的平均值 (10+12+9+21+2)/5 个非空值 = 10,8
您需要计算集合的平均值,因此您需要向 AVG
函数引入第一个参数。
从这里开始:
https://msdn.microsoft.com/en-us/library/ms146067.aspx?f=255&MSPPError=-2147217396
这是定义:
Avg( Set_Expression [ , Numeric_Expression ] )
而不是 AVG([Measures].[M1])
试试这个:
AVG(
nonempty([Date].[Calendar].[Date], [Measures].[M1])
,[Measures].[M1]
)
...但我相信 AVG 函数会为您处理空值。所以下面应该是等价的:
AVG(
[Date].[Calendar].[Date]
,[Measures].[M1]
)
如果您想要平均每日价值,那么@whytheq 展示了一种在 MDX 中实现的方法。但我相信你想要一个简单的平均值。在 SSAS 中执行此操作的正确方法是使用 AggregateFunction=Sum (您已经拥有)创建一个与 SQL 列 M1 关联的度量 M1,并在 SQL 列 M1 上创建第二个度量 M1_Count在具有 AggregateFunction=Count.
的度量组中然后创建计算度量:
CREATE MEMBER CURRENTCUBE.[Measures].[M1 Avg] as
IIF([Measures].[M1_Count]=0,null,[Measures].[M1]/[Measures].[M1_Count]);