仅适用于NonEmpty - SSAS MDX
对于一天(可能有多个datetime记录),我想根据我的第一个度量创建第二个度量,仅计算nonempty
的AVG
值。我已经试过如下:仅适用于NonEmpty - SSAS MDX
"CREATE MEMBER CURRENTCUBE.[Measures].[M2]
AS AVG([Measures].[M1]),
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'DATA' ;"
但SSAS AVG功能似乎回到我总:
日期时间 “M1”
16年1月1日12:10 “10”
1 /十六分之一13:10 “12”
16年1月1日14:10
16年1月1日15:10 “9”
16年1月1日16:10
16年1月1日17:10“21”
1/1/16 18:10
16年1月1日19点10分 “2”
平均非空度量值(10 + 12 + 9 + 21 + 2)/ 5的非空值= 10,8
如果你想日均值,那么@whytheq显示的方式做到这一点的MDX。但我相信你想要一个简单的平均值。在SSAS中执行此操作的正确方法是,使用AggregateFunction = Sum(已具有)创建与SQL列M1相关的度量M1,并使用AggregateFunction = Count在度量值组中创建SQL列M1上的第二个度量M1_Count。
然后创建一个计算度量:
CREATE MEMBER CURRENTCUBE.[Measures].[M1 Avg] as
IIF([Measures].[M1_Count]=0,null,[Measures].[M1]/[Measures].[M1_Count]);
您好格雷格GAlloway,我试过这个解决方案之前,我的帖子,但没有达到预期的结果。用SUM(M1)/ COUNT(Rows)计算的AVG考虑到了M1的空值,我只想保留非空值 – SESAMAREVA
@SESAMAREVA正确。这就是为什么你需要一个M1_Count度量,它是该特定列的计数。 – GregGalloway
感谢您的反馈。它现在工作正常:) – SESAMAREVA
您需要计算您的平均超过一组,因此您需要为AVG
函数引入第一个参数。
从这里:
https://msdn.microsoft.com/en-us/library/ms146067.aspx?f=255&MSPPError=-2147217396
这是定义:
AVG(Set_Expression [,数值_])
代替AVG([Measures].[M1])
试试这个:
AVG(
nonempty([Date].[Calendar].[Date], [Measures].[M1])
,[Measures].[M1]
)
...但我相信AVG功能会为您处理空值。所以下面应该是等价的:
AVG(
[Date].[Calendar].[Date]
,[Measures].[M1]
)
我提交了一个不同的答案,我认为这个问题是一个更好的答案。 – GregGalloway
@GregGalloway根本不用担心:我不允许修改我们的立方体设置或设计,所以我部分地猜测了上述情况。 – whytheq
有没有一种方法,以获得M1非空值的数量?在我的日期设置示例预期的答案是5 – SESAMAREVA