MDX-запрос не фильтруется правильно - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть следующая схема звезды:

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 (с нулями):

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

Обходной путь - использовать NonEmpty, однако кажется, что куб неправильно смоделирован.

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Это обычный случай и не означает, что модель куба неверна.

В MDX вам также следует фильтровать строки, используя любую функцию фильтра, если вы не хотите, чтобы они появлялись в вашем результате. В вашем случае вы должны использовать NonEmtpy для уничтожения пустых значений.

0 голосов
/ 29 сентября 2010

Можете ли вы выполнить следующее:

с элементом XX в качестве [Objects]. [ObjHierarchy] .currentMember.Properties ("KEY")

выберите {[Показатели]. [Объем], XX} в столбцах, [Объекты]. [ObjHierarchy]. [Уровень 02] в строках от [DM ​​OC] где ([Objects]. [ObjectType]. & [2], [Simulation]. [SimulationID]. & [52])

MyObj1 и MyObj2 не должны иметь одинаковый ключ; иначе я не вижу прямо сейчас.

...