1

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

4

1 回答 1

1

在您在评论中解释之后:要获得每个层次结构级别的相同子级,您可以使用 MDX 函数COUSIN这里是 msdn 上的参考)。正如文件所说:

返回与指定子成员在父成员下具有相同相对位置的子成员。

所以在你的情况下,你的日期维度必须是完整的,没有丢失几个月或几天,所以你可以写一个这样的查询(我在 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 月是完整的,我可以毫无问题地申请表弟操作员。

希望这有帮助!

于 2013-06-12T07:29:48.033 回答