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