汇总计算成员在特定时间内的平均值

时间:2017-05-11 09:53:20

标签: time service range average analysis

快速信息

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

我有什么

我的计算成员看起来像:

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

此[MyTotalSample]会员与[时间]维度相关, 所以我每[时间]得到[MyTotalSample]。[Day]。

结果如下表所示,例如“2017年1月27日”的值是“2017年1月27日”所有[MyTotalSample]值的总和。

|---------------------------------|
|[Time].[Day]    | MyTotalSample  |
|---------------------------------|
|January 27 2017 | 221            |
|January 28 2017 | 303            |
|January 29 2017 | 298            |
|January 30 2017 | 238            |
|---------------------------------|

到目前为止。

问题

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

获取类似下表的内容,其中“2017年1月27日”的值是“2017年1月27日”至“2017年1月8日”范围内[MyTotalSample]的平均值。

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

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

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

感谢您抽出时间

菲利克斯

1 个答案:

答案 0 :(得分:0)

我们在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';