2010-09-17 66 views
0

我有以下星型模式:MDX查詢不正確過濾

Objects  <-> Facts   <-> Simulation 
-ObjectID   -ObjectID   -SimulationID 
-SimulationID  -SimulationID  
-ObjHierarchy  -Volume 
-ObjectType 

現在我想用兩個維度來篩選立方體:

select [Measures].[Volume] on columns, 
[Objects].[ObjHierarchy].[Level 02] on rows 
from [DM OC] 
where ([Objects].[ObjectType].&[2], [Simulation].[SimulationID].&[52]) 

然而,這返回的行SimulationID=52(具有值),而且對於複製SimulationID=53(用null):

ObjHierarchy | Volume 
MyObj1  | 12345 
MyObj2  | 54321 
MyObj1  | (NULL) 
MyObj2  | (NULL) 

一種解決方法是使用NonEmpty,但是看起來這個cube並不是以正確的方式建模的。

回答

1

這是一個常見的情況,並不意味着該立方體的模型錯了。

在MDX中,如果你不希望它們出現在你的結果中,你還應該使用任何過濾函數來過濾這些行。在你的情況下,你應該使用NonEmtpy來清除空值。

0

可以執行以下操作:

與構件XX爲[對象] [ObjHierarchy] .currentMember.Properties( 「KEY」)

選擇{[度量] [體積],XX} [Objects]。[ObjectType]。& [2],[Simulation]。[SimulationID]。& [0128] [0] [0] 52])

MyObj1和MyObj2不應該有相同的密鑰;否則我現在看不到。

+0

該查詢返回相同數量的結果,「xx」成員返回所有行的值(即使對於Volume爲空的那些結果)。所有對象都有不同的鍵,所以即使第一個MyObj1具有與第二個MyObj1不同的鍵(這同樣適用於MyObj2) - 對於每個SimulationID,都有不同的對象集合。 – noup 2010-10-01 13:30:30

+0

看起來你有不同的MDX成員具有相同的名稱,所以這解釋了結果。 – 2010-10-03 10:42:01