MDX: Как получить предыдущий период на основе верхнего счета? - PullRequest
1 голос
/ 03 октября 2019

Я должен рассчитать 10 лучших брендов за этот год, а затем получить те же цифры за прошлый год ... но я нашел это немного хитрым.

У меня есть следующий набор для 10 лучших брендовпо сравнению с прошлым годом.

Моя дата - это параметр (месяц-год), и пока все в порядке.

filter(TopCount(
              ([10 - Brand].[Brand].Allmembers) * {STRTOMEMBER(@DATE)}
          ,10,
         [Measures].[Act YTD]
          ), [Measures].[Act YTD] <> null)

Но теперь я должен использовать этот набор и получить предыдущийгод.

Ожидаемые результаты: получить 10 лучших в этом году и после, цифры прошлого года в том же запросе:

Year | Quarter |   Month   | Brand | Act YTD
2019 | 20193   |  Aug 2019 | BR01  | 150
2019 | 20193   |  Aug 2019 | BR02  | 250
2019 | 20193   |  Aug 2019 | BR03  | 350
2019 | 20193   |  Aug 2019 | BR04  | 450
2019 | 20193   |  Aug 2019 | BR05  | 550
2019 | 20193   |  Aug 2019 | BR06  | 650
2019 | 20193   |  Aug 2019 | BR07  | 750
2019 | 20193   |  Aug 2019 | BR08  | 850
2019 | 20193   |  Aug 2019 | BR09  | 950
2019 | 20193   |  Aug 2019 | BR10  | 1150

2018 | 20183   |  Aug 2018 | BR01  | 100
2018 | 20183   |  Aug 2018 | BR02  | 200
2018 | 20183   |  Aug 2018 | BR03  | 300
2018 | 20183   |  Aug 2018 | BR04  | 400
2018 | 20183   |  Aug 2018 | BR05  | 500
2018 | 20183   |  Aug 2018 | BR06  | 600
2018 | 20183   |  Aug 2018 | BR07  | 700
2018 | 20183   |  Aug 2018 | BR08  | 800
2018 | 20183   |  Aug 2018 | BR09  | 900
2018 | 20183   |  Aug 2018 | BR10  | 1000

Мне нужно руководство:)

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Я нашел решение.

Вместо того, чтобы отображать результаты в строках, теперь я отображаю их в виде столбцов.

И мне пришлось изменить дизайн отчета из-за группирования строк и столбцов.

Таким образом, я могу создать топ-10 на основе даты этого года и получить показатели Y-1.

Year | Quarter |   Month   | Brand | Act YTD | Act YTD -1 | 
2019 | 20193   |  Aug 2019 | BR01  | 150     | 100        | 
2019 | 20193   |  Aug 2019 | BR02  | 250     | 200        | 
2019 | 20193   |  Aug 2019 | BR03  | 350     | 300        | 
2019 | 20193   |  Aug 2019 | BR04  | 450     | 400        | 
2019 | 20193   |  Aug 2019 | BR05  | 550     | 500        | 
2019 | 20193   |  Aug 2019 | BR06  | 650     | 600        | 
2019 | 20193   |  Aug 2019 | BR07  | 750     | 700        | 
2019 | 20193   |  Aug 2019 | BR08  | 850     | 800        | 
2019 | 20193   |  Aug 2019 | BR09  | 950     | 900        | 
2019 | 20193   |  Aug 2019 | BR10  | 1150    | 1000       | 
0 голосов
/ 03 октября 2019

Вы можете попробовать использовать функции Union и Parallelperiod, что-то вроде этого, в зависимости от имени вашего измерения даты, иерархии и уровня:

Union(filter(TopCount(
              ([10 - Brand].[Brand].Allmembers) * {STRTOMEMBER(@DATE)}
          ,10,
         [Measures].[Act YTD]
          ), [Measures].[Act YTD] <> null)
,
filter(TopCount(
              ([10 - Brand].[Brand].Allmembers) * {PARALLELPERIOD([Date].[Calendar Year].[Calendar Year], 1, STRTOMEMBER(@DATE))}
          ,10,
         [Measures].[Act YTD]
          ), [Measures].[Act YTD] <> null))
...