2010-03-17 3 views
0

То, что я пытаюсь достичь, выглядит очень простым, но я не могу заставить его работать. Мои данные - это заказы, у которых есть дата, и у меня есть типичный размер времени с уровнями «Месяц» и «Год».MDX: Агрегаты над набором

Я хотел бы получить вывод, в котором указано количество заказов за последние 6 месяцев и общее, например:

 
Oct 2009 20 
Nov 2009 30 
Dec 2009 25 
Jan 2009 15 
Feb 2010 45 
Mar 2010 5 
Total  140 

я могу создать набор с членами окт 2009, пока Mar 2010 и мне удалось получить эту часть моего желаемого выхода:

 
Oct 2009 20 
Nov 2009 30 
Dec 2009 25 
Jan 2009 15 
Feb 2010 45 
Mar 2010 5 

Просто я не в состоянии получить общая линия.

ответ

2

Вы можете достичь этого путем добавления элемента ALL к набору, а затем обернув все это в VisualTotals() функция

SELECT 
    ... on COLUMNS, 
    VISUALTOTALS (
     {[Month].[Month].[Oct 2009]:[Month].[Month].[Mar 2010] 
     , [Month].[Month].[All] } 
) ON ROWS 
FROM <cube> 
+0

Привет, Даррен! Прошу прощения, но это не работает для меня. А что смущает меня больше всего: {. [Measures] [Sales Count]}.. Попробуйте следующие два запроса 1. выберите на колоннах, непустым VisualTotals (Hierarchize ({[Клиенты] [Все клиенты] [ США]. [OR] .Дети, [Клиенты]. [Все клиенты]. [США]. [OR]. [Олбани]. Дети]), «*») ВКЛЮЧЕНЫ ROWS из [Sales] 2. select {[Measures]. [Sales Count]} ON COLUMNS, NON EMPTY Hierarchize ({[Клиенты]. [Все клиенты]. [США]. [OR] .Дети, [Клиенты]. [Все клиенты]. [США] [OR]. [Albany] .Children}) ON ROWS из [Sales] Вы получите те же результаты с VISUALTOTALS и без него. – TorstenS

+0

Это потому, что вы показываете всех детей видимых членов. Поэтому на оси строк нет сумм, которые относятся к «невидимым» членам. Если вы снимаете вызов .children после [Customers]. [Все клиенты]. [США]. [OR]. Дети - вы увидите, что первый запрос изменится, чтобы отобразить только сумму для [Олбани] в [OR ]. –

1

здесь один из возможных решений для Adventure Works DW Demo кубы. Запрос выбирает последние 6 счетчиков заказов и добавляет сумму на размер даты:

WITH MEMBER [Date].[Calendar].[Last 6 Mth Order Count] AS 
aggregate( 
ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]).Lag(6) 
: ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]) 

) 
SELECT {[Measures].[Order Count]} ON COLUMNS 
, {ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]).Lag(6) 
: ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]) 
,[Date].[Calendar].[Last 6 Mth Order Count]} 
ON ROWS 
FROM [Adventure Works] 
Смежные вопросы