MDX - 需要计算一个月内的平均总数,不包括周末

时间:2014-03-21 11:50:09

标签: sql reporting-services mdx analysis

我是MDX的全新手,并被要求制定一个我觉得很难的计算。我已经阅读了有关该语言的基础知识,并查看了在线文章,但很难找到可以帮助我的东西。

我每天都有一个TotalLogins的度量。

我有一个日期维度,具有日期/月/年/日的周期属性。

我需要做的是获取特定月份的平均TotalLogins,但需要注意不包括星期六/星期日。

我一直在玩AVG功能,EXCEPT功能和IIF功能,但似乎无法击中头部。

以下是我一直在尝试的例子:

WITH 
MEMBER [Measures].[MyAvg] AS
(
    AVG(Descendants ([Dim Date].[Date].CurrentMember, 
                       [Dim Date].[Date]),
            [Measures].[UniqueVisitsDay])
)
SELECT 
      {[Measures].[MyAvg]} ON COLUMNS,
      {NONEMPTY([Dim Date].[Year Month].Members)} ON ROWS
FROM
      [MyCube];

这给了我一个月的平均值,但不允许我指定介于两者之间的月份范围,并且不允许我过滤总数以便不包括星期六/星期日。

有人能指出我正确的方向吗?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

试试这个:

WITH MEMBER [Measures].[MyAvg] AS
    AVG(
        EXCEPT([Dim Date].[Day Of Week].Members, 
           {[Dim Date].[Day Of Week].[Saturday],[Dim Date].[Day Of Week].[Sunday]}
        ), [Measures].[UniqueVisitsDay]
    )
SELECT { [Measures].[MyAvg] } ON COLUMNS,
    NON EMPTY { [Dim Date].[Year Month].Members } ON ROWS
FROM
    [MyCube];

如果您想将结果限制在特定日期范围内,请使用以下内容替换底部的第3行:

    NON EMPTY { [Dim Date].[Year Month].[2013 November]:[Dim Date].[Year Month].[2014 January] } ON ROWS

(当然您可能需要用实际名称替换成员名称,或者更好的是,使用键,例如:[Dim Date]。[Year Month]。& [201311])