MDX:按子值限制父聚合

时间:2013-06-10 17:29:58

标签: ssas mdx

我的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子句,但我遇到了同样的问题。这有任何意义吗?我感谢任何帮助,如果能够进一步深入学习/理解,我不反对阅读长篇文章。谢谢!

1 个答案:

答案 0 :(得分:1)

在评论中解释之后:要获得每个层次结构级别的相同子级,可以使用MDX函数COUSINhere 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月完成,我可以毫无问题地申请堂兄操作员。

希望这有帮助!

相关问题