SSAS MDX 上一年 - 忽略过滤器

SSAS MDX Previous Year - Ignore Filter

我试着得到实际营业额和上一年同期的营业额。

我写了这个查询:

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]
)

现在我得到以下结果:

商店 |实际成交 |上年营业额

汉堡 | 100.00 | 120.00

慕尼黑 | 140.00 | 130.00

科隆 | 90.00 | 110.00

柏林 | 150.00 |空

Berlin 没有上一年的值,因为该商店在 2019 年 1 月的状态为 "Not Comparable"。此 "Store Status" 过滤器不仅适用于实际营业额,也适用于上一年的计算。我怎样才能在计算中忽略这个过滤器?无论商店在去年是 "Not comparable",我都想从上一年获得柏林的价值。此过滤器仅针对实际情况将实际 "Not comparable" 商店踢出此结果列表。

您需要将 "default member" 添加到您想要忽略上下文的任何计算中。 您的代码将是

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]
)