聚合某个计算成员在特定时间内的平均值

aggregate the average of a calculated member over a certain time

快速信息

我有一个 Microsoft SQL 服务器分析项目,我必须在其中汇总过去 20 天时间范围内计算成员的平均值。我不知道如何解决这个问题。

我有什么

我的计算成员看起来像:

CREATE MEMBER CURRENTCUBE.[Measures].[MyTotalSample]
 AS [Measures].[ValueA]-[Measures].[ValueB]-[Measures].[ValueC],
VISIBLE = 1, ASSOCIATED_MEASURE_GROUP = 'MySamples';

此 [MyTotalSample] 成员与 [时间] 维度相关, 所以我得到每个 [Time].[Day].

的 [MyTotalSample]

结果类似于下面的 table,其中 "January 27 2017" 的值是 "January 27 2017".

的所有 [MyTotalSample] 值的总和
|---------------------------------|
|[Time].[Day]    | MyTotalSample  |
|---------------------------------|
|January 27 2017 | 221            |
|January 28 2017 | 303            |
|January 29 2017 | 298            |
|January 30 2017 | 238            |
|---------------------------------|

目前有效。


问题

但我还想做的是从当天到过去 20 天范围内的 [MyTotalSample] 的每日平均值。

要获得类似于下面的 table 的内容,其中 "January 27 2017" 的值是 [MyTotalSample] 在 "January 27 2017" 到 "January 08 2017" 范围内的平均值。

|------------------------------------|
|[Time].[Day]    | MyTotalSample(Avg)|
|----------------|-------------------|
|January 27 2017 | 224               |
|January 28 2017 | 228               |
|January 29 2017 | 231               | 
|January 30 2017 | 226               | 
|------------------------------------|

完美的是忽略空值...但现在这并不那么重要...


我希望有人有这方面的经验,可以给我一个如何做到这一点的策略...

感谢您抽出时间

菲利克斯

我们在 msdn!

中找到了解决方案
CREATE MEMBER CURRENTCUBE.[MEASURES].[MyTotalSample Moving Average]
 AS Avg
(
    {
            [Time].[Hierarchy].CurrentMember.Lag(20) 
        :
            [Time].[Hierarchy].CurrentMember
    }
    ,
    [Measures].[MyTotalSample]
), 
VISIBLE = 1 ,  DISPLAY_FOLDER = 'MyDisplayFolder';