Analysis Services - MDX - 逐月比较不同年份的数据

时间:2012-06-18 07:14:02

标签: service mdx analysis cube

我是分析服务/性能点的初学者,我需要一些帮助才能创建图表。

我正在使用Contoso sample database

我找到了一个帮助我创建下图的教程:

X轴上的月份, Y轴上的销售额 我展示了2008年和2009年的数据

因此,使用此图表,我从2008年1月到2009年12月在X轴上获得。(我使用[日期]中的数据。[日历月]) 问题是我需要逐月比较不同年份的数据。 所以在X轴上我需要显示从1月到12月的月份,而不管年份信息。

我尝试使用MDX查询和 parrallelperiod 功能,但我无法显示我需要的内容。我以为我需要按月份的名称对数据进行分组,所以我尝试在sql中使用'group by'失败。 也许我在立方体中需要更多数据?像月份列表(没有年份关系)

我不确定要采取的方向,任何帮助将不胜感激。如果需要,我可以提供更多详细信息。

(看起来冒险工作的尺寸非常相似,所以如果有人对这个立方体做了同样的事情,它也会很棒。)

[编辑]

以下是自动生成的查询:

SELECT
HIERARCHIZE( { [Date].[Calendar Month].&[200901], [Date].[Calendar Month].&[200902], [Date].[Calendar Month].&[200903], [Date].[Calendar Month].&[200904], [Date].[Calendar Month].&[200905], [Date].[Calendar Month].&[200906], [Date].[Calendar Month].&[200907], [Date].[Calendar Month].&[200908], [Date].[Calendar Month].&[200909], [Date].[Calendar Month].&[200910], [Date].[Calendar Month].&[200911], [Date].[Calendar Month].&[200912], [Date].[Calendar Month].&[200812], [Date].[Calendar Month].&[200811], [Date].[Calendar Month].&[200810], [Date].[Calendar Month].&[200809], [Date].[Calendar Month].&[200808], [Date].[Calendar Month].&[200807], [Date].[Calendar Month].&[200806], [Date].[Calendar Month].&[200805], [Date].[Calendar Month].&[200804], [Date].[Calendar Month].&[200803], [Date].[Calendar Month].&[200802], [Date].[Calendar Month].&[200801] } )
ON COLUMNS,

HIERARCHIZE( { [Date].[Calendar Year].&[2008], [Date].[Calendar Year].&[2009] } )
ON ROWS

FROM [Sales]

WHERE ( [Measures].[Sales Amount] )

CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL, FONT_FLAGS, FORE_COLOR, BACK_COLOR

[/编辑]

谢谢。

2 个答案:

答案 0 :(得分:1)

更改时间维度属性之间的属性关系,如下所示: 日期 - >月 - >年,然后您可以选择过滤器中的任何年份,X轴上的月份将是相应的年份。如果您在X轴上有五月并且没有选择任何一年(默认情况下是全部会员)那么您将累积所有五月份,但如果您选择2010年,那么您将拥有2010年5月,如果您选择过滤2011年年份X轴你将在2011年5月。

答案 1 :(得分:1)

如果您不想更改时间维度属性之间的关系,您可以喜欢这个:

WITH SET [months_2008_2009] AS { [Date].[Calendar Year].&[2008].Children, [Date].[Calendar Year].&[2009].Children }

MEMBER [Date].[Calendar Month].[January]  AS Aggregate(Filter([months_2008_2009] , [Date].CurrenMember.MemberValue = 'the member value for January'))
MEMBER [Date].[Calendar Month].[February] AS Aggregate(Filter([months_2008_2009] , [Date].CurrenMember.MemberValue = 'the member value for February'))

SELECT {[Date].[Calendar Month].[January], [Date].[Calendar Month].[February]} ON COLUMNS
FROM [Sales]
WHERE ( [Measures].[Sales Amount] )

[months_2008_2009]中,应该有2008年和2009年的所有月份。

[Date].[Calendar Month].[January]是一个计算成员,将成为[Date].[Calendar Month].&[200801][Date].[Calendar Month].&[200901]的聚合。您必须在其他月份添加其他成员。

我假设[Calendar Year][Calendar Month]是属于同一层次结构的两个级别。