SSAS MDX в предыдущем году - игнорировать фильтр - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь получить фактический оборот и оборот предыдущего года за тот же период.

Я пишу этот запрос:

with 
member [Measures].[Turnover PrevYear] as 
IIF( IsEmpty([Measures].[Turnover Actual] ), 
    NULL,   
    SUM(      
       (ParallelPeriod( [Date].[Year - Quarter - Month - Date].[Year],1,[Date].[Year - Quarter - Month - Date].CurrentMember))
       ,   [Measures].[Turnover Actual]
       ) 
    )
Select  
non empty{[Measures].[Turnover Actual],[Measures].[Turnover PrevYear]} 
on Columns,
non empty{[Store].[Store].[Store].members}
on Rows
from [Sales Cube]
where (
[Date].[Year - Quarter - Month - Date].[Month].&[2020]&[1], 
[Store Status].[Store Status Type].&[Comparable], 
[Store].[Country].[Country].&[GERMANY]
)

Теперь я получаю следующий результат:

Магазин | Актуальный оборот | Оборот PrevYear

Гамбург | 100,00 | 120,00

Мюнхен | 140,00 | 130,00

Кельн | 90,00 | 110,00

Берлин | 150,00 | null

В Берлине нет значения предыдущего года, так как в январе 2019 года магазин имел статус «Не сопоставим». Этот фильтр «Статус магазина» работает не только для фактического оборота, но и для расчета за предыдущий год. Как я могу игнорировать этот фильтр при расчете? Я хочу получить ценность для Берлина с прошлого года, независимо от того, был ли магазин «Несопоставимым» в прошлом году. Этот фильтр предназначен только для фактической ситуации, чтобы исключить фактические магазины «Несопоставимые» из этого списка результатов.

1 Ответ

1 голос
/ 06 марта 2020

Вам необходимо добавить «элемент по умолчанию» в любой расчет, который вы хотите игнорировать в контексте. Ваш код будет

with 
member [Measures].[Turnover PrevYear] as 
IIF( IsEmpty([Measures].[Turnover Actual] ), 
    NULL,   
    SUM(      
       ([Store Status].[Store Status Type].defaultmember, ParallelPeriod( [Date].[Year - Quarter - Month - Date].[Year],1,[Date].[Year - Quarter - Month - Date].CurrentMember))
       ,   [Measures].[Turnover Actual]
       ) 
    )
Select  
non empty{[Measures].[Turnover Actual],[Measures].[Turnover PrevYear]} 
on Columns,
non empty{[Store].[Store].[Store].members}
on Rows
from [Sales Cube]
where (
[Date].[Year - Quarter - Month - Date].[Month].&[2020]&[1], 
[Store Status].[Store Status Type].&[Comparable], 
[Store].[Country].[Country].&[GERMANY]
)
...