我的MDX充其量只是初出茅庐,这是一个现实的可能性,我甚至不知道如何正确地表达我的问题以寻找答案。对不起,如果这是重复的。
我有日期/时间层次[日期]:
[Work Date].[Dates].[Year].[Quarter].[Month].[Day]
我想要做的是返回过去5年的数据,对于X月份(让我们假设1月份):
Year Sub Total
2008 645712.11
2009 848075.43
2010 765802.60
但是,我在根据特定月份限制“年份”数据时遇到问题。我尝试过这个MDX代码,但根本没有结果:
SELECT [Measures].[Sub Total] ON 0,
[Work Date].[Dates].[Year] ON 1
FROM (
SELECT [Work Date].[Dates].[Month].&[01] ON 0
FROM [Data Warehouse])
如果我编辑子选项,我可以得到特定的年份,季度和月份...但我只想限制月份而不是年份。我已经研究过使用EXCEPT子句,但我遇到了同样的问题。这有任何意义吗?我感谢任何帮助,如果能够进一步深入学习/理解,我不反对阅读长篇文章。谢谢!
答案 0 :(得分:1)
在评论中解释之后:要获得每个层次结构级别的相同子级,可以使用MDX函数COUSIN
(here msdn上的引用)。正如文件所说:
返回在a下具有相同相对位置的子成员 父成员作为指定的子成员。
所以在你的情况下你的日期维度必须完整而不会错过几个月或几天,所以你可以编写这样的查询(我在AdventureWorks上测试过)
with member [Measures].[Sub Total]
as (Cousin([Date].[Calendar].[Month].&[2004]&[1], [Date].[Calendar].CurrentMember), [Measures].[Internet Sales Amount]) , Format_string = 'Currency'
Select {[Measures].[Internet Sales Amount],[Measures].[Sub Total] } on 0
,{
[Date].[Calendar].[Calendar Year].&[2002]
,[Date].[Calendar].[Calendar Year].&[2003]
,[Date].[Calendar].[Calendar Year].&[2004]
} on 1
from [Adventure Works]
多年来,我并列了总数和副总数。我正在考虑这3年,因为他们从1月到12月完成,我可以毫无问题地申请堂兄操作员。
希望这有帮助!