1

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

我写了这个查询:

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 | 无效的

柏林没有前一年的值,因为商店在 2019 年 1 月的状态为“不可比较”。此“商店状态”过滤器不仅适用于实际营业额,也适用于上一年的计算。我如何在计算中忽略此过滤器?无论这家商店在去年是否“不可比”,我都想从去年获得柏林的价值。此过滤器仅针对实际情况将实际的“不可比较”商店踢出此结果列表。

4

1 回答 1

1

您需要将“默认成员”添加到要忽略上下文的任何计算中。您的代码将是

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]
)
于 2020-03-06T14:11:27.357 回答