Команда MDX LAG в рассчитанной мере возвращает неправильное значение - PullRequest
0 голосов
/ 06 октября 2018

У меня следующий запрос

with member priorSellOut as
  ([Date].[Year Month].CurrentMember.LAG(1),MEASURES.[Sell Out])
Select 
  {
      MEASURES.[Sell Out]
      ,PriorSellOut
  } ON COLUMNS,
  [Date].[Year Month].[Year Month].Members ON ROWS
From Sales

результат этого запроса:

             Sell Out       Prior Sell Out
   2018.01   34329          (null)
   2018.02   37752          34329
   2018.03   21798          37752
   2018.04   41477          21798
   2018.05   50125          41477
   2018.06   6363           50125
   2018.07   11511          6363
   2018.08   7444           11511
   2018.09   13989          7444
   2018.10   1936           13989

Я хочу иметь последние 3месяц назад.и используйте [3 месяца назад] именованный запрос set.following:

with member priorSellOut as
  ([Date].[Year Month].CurrentMember.LAG(1),MEASURES.[Sell Out])
Select 
  {
      MEASURES.[Sell Out]
      ,PriorSellOut
  } ON COLUMNS,
  [Date].[Year Month].[Year Month].Members ON ROWS
From Sales
Where ([3 Month Ago])

результат этого запроса:

             Sell Out       Prior Sell Out
   2018.08   7444           (null)
   2018.09   13989          7444
   2018.10   1936           13989

Я хочу получить следующий результат.Столбец «Предварительная распродажа» на 2018.08 должен иметь значение.

             Sell Out       Prior Sell Out
   2018.08   7444           11511
   2018.09   13989          7444
   2018.10   1936           13989

Заранее спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

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

Чтобы отфильтровать строки - просто примените ограниченный наборвыражение на ось.Мы хотим, чтобы отображались последние 3 месяца, поэтому давайте возьмем последние три члена списка месяцев следующим образом: TAIL ([Дата]. [Год Месяц]. [Год Месяц] .Members, 3) ,Теперь мы можем безопасно удалить предложение WHERE.Результат:

with member priorSellOut as
  ([Date].[Year Month].CurrentMember.LAG(1),MEASURES.[Sell Out])
Select 
  {
      MEASURES.[Sell Out]
      ,PriorSellOut
  } ON COLUMNS,
  TAIL([Date].[Year Month].[Year Month].Members,3) ON ROWS
From Sales

ПРИМЕЧАНИЕ. Предполагается, что измерение [Дата]. [Год Месяц]. [Год Месяц] ПРАВИЛЬНО ЗАКАЗАНО

РЕДАКТИРОВАТЬ: если вам действительно необходимоиспользуйте именованный набор [3 месяца назад] - просто поместите его на ось вместо формулы TAIL (...), которую я использовал.

...