MDX 从日期维度中选择年份列表

MDX selecting a list of years from Date dimension

所以我有一个日期维度,其中一个成员是 4 位数年份,例如 2012

我对 MDX 还是很陌生。

我正在查看一个使用 AdventureWorks 2008 DW 的示例。以下将获得 2008 年的值,但我想要所有年份成员的值列表。

WITH MEMBER Measures.ValueColumn as [Date].[Calendar].[July 1, 2008].MemberValue
MEMBER Measures.KeyColumn as [Date].[Calendar].[July 1, 2008].Member_Key
MEMBER Measures.NameColumn as [Date].[Calendar].[July 1, 2008].Member_Name

SELECT {Measures.ValueColumn, Measures.KeyColumn, Measures.NameColumn}  ON 0
from [Adventure Works]

Results:
ValueColumn KeyColumn   NameColumn
7/1/2008    20080701    July 1, 2008

我要更改什么才能获得当前年份和前 5 年的年份值列表?

这为我提供了 Adventure Works 多维数据集中所有日历年成员的列表

SELECT NULL ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works];

结果:

All Periods
CY 2005
CY 2006
CY 2007
CY 2008
CY 2010

这些是成员名称,但我想要他们的值

您可以使用 currentmember 函数来帮助合并您提到的两个脚本:

WITH 
  MEMBER [Measures].[ValueColumn]AS
     [Date].[Calendar Year].CURRENTMEMBER.MemberValue
  MEMBER [Measures].[KeyColumn] AS
     [Date].[Calendar Year].CURRENTMEMBER.Member_Key
  MEMBER [Measures].[NameColumn] AS 
     [Date].[Calendar Year].CURRENTMEMBER.Member_Name
SELECT 
   {
     [Measures].[ValueColumn]
   , [Measures].[KeyColumn]
   , [Measures].[NameColumn]
   }  ON 0
  [Date].[Calendar Year].MEMBERS ON 1
FROM [Adventure Works];

如果您想避免使用 All 成员,请将级别添加到表达式 [Date].[Calendar Year].MEMBERS ON 1 中,如下所示:

WITH 
  MEMBER [Measures].[ValueColumn]AS
     [Date].[Calendar Year].CURRENTMEMBER.MemberValue
  MEMBER [Measures].[KeyColumn] AS
     [Date].[Calendar Year].CURRENTMEMBER.Member_Key
  MEMBER [Measures].[NameColumn] AS 
     [Date].[Calendar Year].CURRENTMEMBER.Member_Name
SELECT 
   {
     [Measures].[ValueColumn]
   , [Measures].[KeyColumn]
   , [Measures].[NameColumn]
   }  ON 0
  [Date].[Calendar Year].[Calendar Year].MEMBERS ON 1
FROM [Adventure Works];