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];
所以我有一个日期维度,其中一个成员是 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];