MTD功能不适用于SCOPE

时间:2015-05-08 15:30:01

标签: ssas mdx

SCOPE ([Measures].[Net IMS Volume]);
 ( [Time].[Time Calculations].[MTD] ) 
   = SUM(
       MTD([Time].[Time Hierarchy 1].CURRENTMEMBER)
     ,[Time].[Time Calculations].[Current Time] 
  );  
END SCOPE;

我期待我的MTD会在月份的日期显示出来。但结果是我只是在月级获得数据。

当我在SSMS上做同样的事情时,用ff。:

WITH MEMBER [Time].[Time Calculations].MIKE2 AS
    SUM
    (
      MTD([Time].[Time Hierarchy 1].CURRENTMEMBER)
     ,[Time].[Time Calculations].[Current Time] 
    )
SELECT 
  { 
    ([Time].[Time Calculations].[MTD],[Measures].[Net IMS Volume])
   ,([Time].[Time Calculations].MIKE2,[Measures].[Net IMS Volume])
  } ON 0
  ,[Time].[Time Hierarchy 1].[Date] ON 1
FROM [My Cube];

我在日期级别获取数据。我也在YTD功能上体验过这一点。

1 个答案:

答案 0 :(得分:0)

您的时间维度可能无法正确输入。 YTDMTD需要进行特定输入才能按预期运行。

MSDN引用YTD函数:https://msdn.microsoft.com/en-us/library/ms146039.aspx

在"备注"定义部分:

  

如果未指定成员表达式,则默认为当前   第一个层次结构的成员,第一个层次结构的类型为Year   度量组中类型的维度。

     

Ytd函数是PeriodsToDate函数的快捷函数,其中Type为   设置了级别所基于的属性层次结构的属性   多年。也就是说,Ytd(Member_Expression)相当于   PeriodsToDate(Year_Level_Expression,Member_Expression)。请注意这一点   当Type属性设置为FiscalYears时,函数将不起作用。

您可以通过转换为使用PeriodsToDate来测试这是否是您的问题:

WITH MEMBER [Time].[Time Calculations].MIKE2 AS
    SUM
    (
      PeriodsToDate(
           [Time].[Time Hierarchy 1].[Month Level]
         , [Time].[Time Hierarchy 1].CURRENTMEMBER
      )
     ,[Time].[Time Calculations].[Current Time] 
    )
SELECT 
  { 
    ([Time].[Time Calculations].[MTD],[Measures].[Net IMS Volume])
   ,([Time].[Time Calculations].MIKE2,[Measures].[Net IMS Volume])
  } ON 0
  ,[Time].[Time Hierarchy 1].[Date] ON 1
FROM [My Cube];