MDX - Получить сумму за неделю предыдущего года с функцией LAG - PullRequest
0 голосов
/ 25 октября 2019

Я хочу получить сумму данных за каждую неделю предыдущего года, с этим условием, что даты должны начинаться с 1 октября, а количество дней в этих неделях должно быть одинаковым. Единственная проблема, с которой я столкнулся, это первая неделя октября.

Когда я делаю lag(364) по дням, я получу точный день предыдущего года, и это нормально. Но когда я использую lag(52) по неделям, я получу различное количество дней

Знаете ли вы, как правильно написать mdx, чтобы получить агрегированную сумму в неделю только для связанных дней (текущий день - 364 дня)?

Значения в кубе:

2018-10-01  100
2018-10-02  200
2018-10-03  300
2018-10-04  400
2018-10-05  500
2018-10-06  600

Что я получаю от mdx:

Days        (related days)  lag(364) on days    lag(52) on weeks
2019-10-01  (2018-10-02  )   200                 2100
2019-10-02  (2018-10-03  )   300                 2100
2019-10-03  (2018-10-04  )   400                 2100
2019-10-04  (2018-10-05  )   500                 2100
2019-10-05  (2018-10-06  )   600                 2100

И я ожидаю, что на эту агрегированную сумму будет только 2000 (безпервый день)

Мой MDX:

WITH 
  MEMBER [Measures].[Sales LastYear by Day] AS 
    Sum ( Ancestor (
        [Calendar].[CAL Additional].CurrentMember
       ,[Calendar].[CAL Additional].[Op Day]
      ).Lag(364)
     ,[Measures].[Sales]
    ) 
  MEMBER [Measures].[Sales LastYear by Week] AS 
    Sum ( Ancestor (
        [Calendar].[CAL Additional].CurrentMember
       ,[Calendar].[CAL Additional].[Op Week]
      ).Lag(52)
     ,[Measures].[Sales]
    ) 

SELECT 
  NON EMPTY  {
      [Measures].[Sales LastYear by Day],
      [Measures].[Sales LastYear by Week]
  } ON COLUMNS
 ,NON EMPTY { 
        [Calendar].[Op Day].[Op Day].ALLMEMBERS
  } ON ROWS
  FROM [MyCube]
...