2010-09-17 156 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