2008-10-29 192 views
1

我不知道這是可能的,或者沒有,或者如果我有限的MDX的知識是推動我在錯誤的方向......MDX:計算的尺寸?

我處理有日期的兩個不同尺寸的立方體,[Statement Dates][Premium Dates]。此外,在每個層次結構是這樣的:

[Statement Dates].[Statement Year].[2008] 
[Payment Dates].[Payment Year].[2008] 

對於我執行我需要像做一些業務邏輯:

select 
    ({ [Measures].[Commission] }) on columns, 
    ({[Products].[Product Category]}) on rows 
from [Cube] 
where 
(
    IIF([Products].[Product Category].CurrentMember.Name = "Some Category", 
     [Statement Dates].[Statement Year].[2008], 
     [Payment Dates].[Payment Year].[2008]) 
) 

所以我需要它來區分使用什麼尺寸的根據正在使用的產品類別過濾一年。

這解析好,查詢運行,但數字似乎表明,IIF語句總是返回false。

回答

3

因爲首先對WHERE子句進行評估,所以IIF中的.CurrentMember函數只會看到「所有產品類別」。在這種情況下,[Products]。[Product Category] ​​.CurrentMember.Name永遠不會等於「Some Category」,因爲上下文中唯一的產品類別是「All Product Cateogories」。

一種可能的解決辦法是做一個計算如下所示:

WITH MEMBER Measures.Commission2 as 
SUM(
{[Products].[Product Category].[Product Category].Members} 
, IIF([Products].[Product Category].CurrentMember.Name = "Some Category" 
    , ([Statement Dates].[Statement Year].[2008],[Measures].[Commission]) 
    , ([Payment Dates].[Payment Year].[2008].[Measures].[Commission])) 
) 
select 
    ({ [Measures].[Commission2] }) on columns 
, ({[Products].[Product Category]}) on rows 
from [Cube] 

你也可以做在計算腳本中的作用域assignement在你的立方體做這樣的事情。