MDX return 每年的最后一个月
MDX return last month of every year
我正在尝试创建一个集合 return 包含每年数据的最后一个月的值。
例如,如果我将年份放在行中
2011、2012、2013、2014 都将包含 12 月的数据。
2015 年将包含 2015 年 6 月的数据。
除了 return 的最近一个月,我似乎什么也得不到。我认为这是因为我的尾巴声明,但我不确定如何解决它。
CREATE SET [Last Statement Month] AS
Tail(
nonempty(
Descendants(
[Date].[Calendar].currentmember
,[Date].[Calendar].[Month]
),
[Measures].[Sale Amount]
), 1);
我也尝试获取每个月的最后一天,但是当我将它与行中的年份一起使用时,什么也没有显示。
GENERATE(
{
Openingperiod([Date].[Calendar].[Month]):ClosingPeriod([Date].[Calendar].Month)
},
{[Date].[Calendar].CurrentMember.Lastchild}
);
我目前不在 AdvWrks,因此无法进行测试。以下有帮助吗?
CREATE SET [Last Statement Month] AS
TAIL(
NONEMPTY(
EXISTING ([Date].[Calendar].[Month].MEMBERS)
,[Measures].[Sale Amount]
)
);
(如果这种方法有效)如果最后执行 EXISTING
,性能显然更好:
CREATE SET [Last Statement Month] AS
TAIL(
EXISTING
NONEMPTY(
[Date].[Calendar].[Month].MEMBERS
,[Measures].[Sale Amount]
)
);
上面的方法似乎行不通。我在下面添加了一个替代方案,这可能是您正在寻找的更多内容:
WITH
DYNAMIC SET [Last Statement Month] AS
Tail
(
NonEmpty
(
(EXISTING
[Date].[Calendar].[Month].MEMBERS)
,[Measures].[Internet Sales Amount]
)
)
MEMBER [Measures].[x] AS
[Last Statement Month].Item(0).Item(0).Member_Caption
MEMBER [Measures].[Lst mth with data] AS `<<<<maybe something like this helps?
Max
(
(EXISTING
[Date].[Calendar].[Month].MEMBERS)
,IIF
(
[Measures].[Internet Sales Amount] = 0
,NULL
/*,[Date].[Calendar].CurrentMember.Member_Caption*/ //<<WRONG PROPERTY USED
,[Date].[Calendar].CurrentMember.MemberValue //<<should help!!
)
)
SELECT
{[Measures].[Lst mth with data],[Measures].[x]} ON 0
,[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works];
结果:
编辑后 returns 这个:
我正在尝试创建一个集合 return 包含每年数据的最后一个月的值。
例如,如果我将年份放在行中
2011、2012、2013、2014 都将包含 12 月的数据。
2015 年将包含 2015 年 6 月的数据。
除了 return 的最近一个月,我似乎什么也得不到。我认为这是因为我的尾巴声明,但我不确定如何解决它。
CREATE SET [Last Statement Month] AS
Tail(
nonempty(
Descendants(
[Date].[Calendar].currentmember
,[Date].[Calendar].[Month]
),
[Measures].[Sale Amount]
), 1);
我也尝试获取每个月的最后一天,但是当我将它与行中的年份一起使用时,什么也没有显示。
GENERATE(
{
Openingperiod([Date].[Calendar].[Month]):ClosingPeriod([Date].[Calendar].Month)
},
{[Date].[Calendar].CurrentMember.Lastchild}
);
我目前不在 AdvWrks,因此无法进行测试。以下有帮助吗?
CREATE SET [Last Statement Month] AS
TAIL(
NONEMPTY(
EXISTING ([Date].[Calendar].[Month].MEMBERS)
,[Measures].[Sale Amount]
)
);
(如果这种方法有效)如果最后执行 EXISTING
,性能显然更好:
CREATE SET [Last Statement Month] AS
TAIL(
EXISTING
NONEMPTY(
[Date].[Calendar].[Month].MEMBERS
,[Measures].[Sale Amount]
)
);
上面的方法似乎行不通。我在下面添加了一个替代方案,这可能是您正在寻找的更多内容:
WITH
DYNAMIC SET [Last Statement Month] AS
Tail
(
NonEmpty
(
(EXISTING
[Date].[Calendar].[Month].MEMBERS)
,[Measures].[Internet Sales Amount]
)
)
MEMBER [Measures].[x] AS
[Last Statement Month].Item(0).Item(0).Member_Caption
MEMBER [Measures].[Lst mth with data] AS `<<<<maybe something like this helps?
Max
(
(EXISTING
[Date].[Calendar].[Month].MEMBERS)
,IIF
(
[Measures].[Internet Sales Amount] = 0
,NULL
/*,[Date].[Calendar].CurrentMember.Member_Caption*/ //<<WRONG PROPERTY USED
,[Date].[Calendar].CurrentMember.MemberValue //<<should help!!
)
)
SELECT
{[Measures].[Lst mth with data],[Measures].[x]} ON 0
,[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works];
结果:
编辑后 returns 这个: