MDX-запрос для сравнения разных лет - PullRequest
2 голосов
/ 23 июля 2011

Я новичок в MDX, и мне было интересно, возможно ли создать запрос, показывающий сумму продаж за год и за месяц по двум разным осям, даже если дата продажи является одним измерением.

Что-то вроде:

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

РЕДАКТИРОВАТЬ: Добавлен Mondrian в теги, потому что, кажется, есть возможности с другими реализациями MDX, недоступными в Mondrian.

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

Да, решение около рассчитанных членов :

Давайте представим, что ваш начальный 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]

Вы также можете добавить более элегантное и гибкое решение, используя служебные или статистические измерения . Эти измерения вместо хранения данных определяют преобразования / функции, и результат будет не совсем тем, который вы ищете, но это интересная концепция.

1 голос
/ 26 июля 2011

Проблема может быть решена с помощью функции 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
...