Я создаю запрос MDX для куба Adventure Works в Analysis Services 2008R2. Я хочу получить месяцы в строках и годы в столбцах, чтобы результат выглядел следующим образом:
2005 | 2006 | 2007 | ...
January ... | ... | ... | ...
February ... | ... | ... | ...
March ... | ... | ... | ...
...
Следующий запрос работает нормально:
SELECT
[Date].[Month of Year].CHILDREN ON ROWS,
( [Date].[Calendar Year].CHILDREN, { [Measures].[Sales Amount] } ) ON COLUMNS
FROM [Adventure Works]
Теперь я хотел бы сравнить продажи текущего месяца с продажами предыдущего месяца:
2005 || 2006 || ...
Sales | Sales prev month || Sales | Sales prev month ||...
January ... | ... || ... | ... || ...
February ... | ... || ... | ... || ...
March ... | ... || ... | ... || ...
...
Я написал запрос, используя функцию ParallelPeriod:
WITH MEMBER [Sales Amount Prev Month] AS ([Measures].[Sales Amount], ParallelPeriod([Date].[Calendar].[Month], 1))
SELECT
[Date].[Month of Year].CHILDREN ON ROWS,
( [Date].[Calendar Year].CHILDREN, { [Measures].[Sales Amount], [Sales Amount Prev Month] } ) ON COLUMNS
FROM [Adventure Works]
Проблема в том, что я получаю значения NULL для показателя [Sales Amount Prev Month].
Похоже, что, несмотря на то, что каждая ячейка представляет месяц и год, SSAS, похоже, не может определить текущего члена [Date]. [Calendar]. [Month]. Тогда ParallelPeriod не удается получить предыдущий месяц.
Есть идеи о том, как заставить функцию ParallelPeriod работать в этом случае? Большое спасибо.