MDX查询比较不同年份

时间:2011-07-23 06:27:39

标签: mdx mondrian

我是MDX的新手,想知道是否可以在两个不同的轴上创建一个显示每年和每月销售额的查询,即使销售日期是单个维度。

类似的东西:

Sales    |   2010    |    2011    |   Diff   
---------+-----------+------------+----------
Jan      |  1234,00  |  2345,10   |  +80%
Feb      |    ...
...

编辑:将mondrian添加到代码中,因为似乎有其他MDX实现可能无法在mondrian中使用。

2 个答案:

答案 0 :(得分:3)

是的解决方案是calculated members

让我们假设您的初始MDX看起来像:

Select
 { [Calendar].[Year].[2010],[Calendar].[Year].[2011] } on 0,
 { [Calendar].[Months].members } on 1
from [Cube]

您可以在[年]层级中添加计算成员:

With
 Member [Calendar].[Year].[Diff] as [Calendar].[Year].[2011] / [Calendar].[Year].[2010]-1, FORMAT_STRING='percent'
Select
 { [Calendar].[Year].[2010],[Calendar].[Year].[2011], [Calendar].[Year].[Diff] } on 0,
 { [Calendar].[Months].members } on 1
from [Cube]

您还可以使用utility or statistical dimensions添加更优雅,更灵活的解决方案。那些维度而不是保存数据定义转换/函数,输出将不是你正在寻找的那个,但它是一个有趣的概念。

答案 1 :(得分:1)

使用ParallelPeriod函数可以解决问题:

WITH MEMBER [Measures].[Einheiten Vorjahr] 
  AS '(ParallelPeriod([Year],1),
      [Measures].[quantity])'
SELECT {[Measures].[quantity],[Measures].[Einheiten Vorjahr]} ON COLUMNS,
       [date].[2010].children on rows
FROM salesorderitems