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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇总计算成员在特定时间内的平均值相关的知识,希望对你有一定的参考价值。

快速信息

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

是)我有的

我的计算成员看起来像:

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

此[MyTotalSample]成员与[时间]维度相关,因此我获得[时间] [日]的[MyTotalSample]。

结果如下表所示,例如“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日”的值是“MyTotalSample”的平均值,范围是“2017年1月27日”到“2017年1月8日”。

|------------------------------------|
|[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'; 

以上是关于汇总计算成员在特定时间内的平均值的主要内容,如果未能解决你的问题,请参考以下文章

工大助手--加权平均分计算

汇总数据

第9课 汇总数据

第9课 汇总数据

ElasticSearch 聚合函数

在 MDX 中,如何对子成员执行计算然后聚合这些子成员?