MDX: Агрегира над набор

Това, което се опитвам да постигна, изглежда много просто, но не мога да го накарам да работи. Моите факти са поръчки, които имат дата и имам типично времево измерение с нивата „месец“ и „година“.

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

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

Мога да създам комплекта с членовете от октомври 2009 г. до март 2010 г. и успявам да получа тази част от желания резултат:

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

Просто не успявам да разбера общата линия.


mdx
person TorstenS    schedule 17.03.2010    source източник


Отговори (2)


Можете да постигнете това, като добавите члена ALL към набора и след това го обвиете във функцията VisualTotals().

SELECT
  ... on COLUMNS,
  VISUALTOTALS (
       {[Month].[Month].[Oct 2009]:[Month].[Month].[Mar 2010] 
       , [Month].[Month].[All] } 
  ) ON ROWS
FROM <cube>
person Darren Gosbell    schedule 18.03.2010
comment
Здравей Дарън! Съжалявам, но това не работи за мен. И това, което ме обърква най-много: Опитайте следните две заявки 1. изберете {[Измервания].[Брой продажби]} НА КОЛОНИ, НЕПРАЗНИ VisualTotals(Hierarchize({[Customers].[All Customers].[USA].[OR ].Деца, [Клиенти].[Всички клиенти].[САЩ].[ИЛИ].[Олбани].Деца}), *) НА РЕДОВЕ от [Продажби] 2. изберете {[Мерки].[Брой продажби]} ON COLUMNS, NON EMPTY Hierarchize({[Customers].[All Customers].[USA].[OR].Children, [Customers].[All Customers].[USA].[OR].[Albany].Children} ) НА РЕДОВЕ от [Продажби] Ще получите същите резултати със и без VISUALTOTALS. - person TorstenS; 18.03.2010
comment
Това е така, защото показвате всички деца на видимите членове. Следователно няма суми на оста на реда, които се отнасят до невидими членове. Ако премахнете извикването .children след [Клиенти].[Всички клиенти].[САЩ].[ИЛИ].Деца - ще видите, че първата заявка ще се промени, за да показва само сумата за [Олбани] в [ИЛИ] ] ниво. - person Darren Gosbell; 19.03.2010

ето едно възможно решение за Adventure Works DW Demo Cube. Заявката избира последните 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]
person user296442    schedule 18.03.2010