MDX:移动平均计算仅给出(空)结果

MDX: Moving average calculation only gives (null) results

我正在尝试在 SSAS 2014 中使用 MDX 计算移动平均线,但所有结果都出来了(空)。

阅读多个网络参考和博客文章让我认为这应该有效,给出 3 个月的移动平均值:

With
  MEMBER [Measures].[MA3] AS 
    Avg(
         [Date].[Calendar Years].[Month].CurrentMember.Lag(2) 
          : [Date].[Calendar Years].[Month],
         [Measures].[Project Views]
       )

SELECT  { [Measures].[Project Views], [Measures].[MA3] } ON 0,
          [Date].[Calendar Years].[Month]  ON 1
FROM [ProjectAccesses] 

但是,(null) 出现在每一列中。

我希望成员数在每种情况下都为 3,使用:

  MEMBER  [Measures].[C3] AS 
    Count(
          [Date].[Calendar Years].[Month].CurrentMember.Lag(2) 
             : [Date].[Calendar Years].[Month],
          INCLUDEEMPTY
         )

但同样,没有检测到语法错误,但所有值都是 (null),这让我相信月份范围集可能是空的。

我已经绕了好几个小时了,运行 没有什么可以尝试的了。

任何人都可以提出可能出了什么问题吗?我是 MDX 的新手,所以可能是我的查询结构有误,或者我的多维数据集配置中存在一些我无法找到的错误。

谢谢

我相信你需要改变

": [Date].[Calendar Years].[Month],"

": [Date].[Calendar Years].currentmember,"

[日期].[日历年].[月] -> 应该给出级别,而不是你想要的当前成员

我找到了解决方案。我曾假设我需要根据我的 [Calendar Years] 层次结构中的成员来形成我的集合。然而,以下没有层次结构的工作正常(虽然我无法解释为什么原始版本没有)。

With
  MEMBER [Measures].[MA3] AS 
      Avg(
           [Date].[Month].CurrentMember.Lag(2) 
             : [Date].[Month].CurrentMember,
           [Measures].[Project Views]
         )
  MEMBER  [Measures].[C3] AS 
    Count(
           [Date].[Month].CurrentMember.Lag(2) 
             : [Date].[Month].CurrentMember,
           INCLUDEEMPTY
         )

SELECT  { [Measures].[Project Views], [Measures].[MA3] , [Measures].[C3] } ON 0,
          [Date].[Calendar Years].[Month]  ON 1
FROM [ProjectAccesses] 

我很惊讶您不能始终使用日历年层次结构。我添加了一些额外的诊断措施,以便您可以查看当前成员函数返回的内容:

WITH
  MEMBER [Measures].[MA3] AS 
      AVG(
           [Date].[Calendar Years].CurrentMember.Lag(2) 
             : [Date].[Calendar Years].CurrentMember,
           [Measures].[Project Views]
         )
  MEMBER  [Measures].[C3] AS 
    COUNT(
           [Date].[Calendar Years].CurrentMember.Lag(2) 
             : [Date].[Calendar Years].CurrentMember,
           INCLUDEEMPTY
         )
  MEMBER  [Measures].[Diagn1] AS  
    [Date].[Calendar Years].CurrentMember.member_caption
  MEMBER  [Measures].[Diagn2] AS  
    [Date].[Calendar Years].CurrentMember.Lag(2).member_caption
SELECT  
    { 
      [Measures].[Project Views]
    , [Measures].[MA3] 
    , [Measures].[C3] 
    , [Measures].[Diagn1]
    , [Measures].[Diagn2]
    } ON 0,
    [Date].[Calendar Years].[Month].MEMBERS  ON 1
FROM [ProjectAccesses];