2010-09-17 25 views
0

J'ai le schéma en étoile suivante:requête MDX ne filtre pas correctement

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

Maintenant, je suis en train de filtrer le cube en utilisant les deux dimensions:

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

Cependant, cela renvoie des lignes pour SimulationID=52 (avec des valeurs), mais aussi pour double emploi avec SimulationID=53 (avec nulls):

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

Une solution consiste à utiliser NonEmpty, mais il semble que le cube ne soit pas modélisé correctement.

Répondre

1

C'est un cas habituel et ne signifie pas que le modèle du cube est erroné.

Dans MDX, vous devez également filtrer les lignes en utilisant n'importe quelle fonction de filtrage si vous ne souhaitez pas qu'elles apparaissent dans votre résultat. Dans votre cas, vous devez utiliser NonEmtpy pour éliminer les valeurs vides.

0

Pouvez-vous exécuter ce qui suit:.

avec XX membre comme [Objets] [ObjHierarchy] .currentMember.Properties ("KEY")

sélectionnez {. [Mesures] [Volume], XX} sur les colonnes, [Objects]. [ObjHierarchy]. [Level 02] sur les lignes from [DM OC] où ([Objects]. [ObjectType]. & [2], [Simulation]. [SimulationID]. & [ 52])

MyObj1 et MyObj2 ne doivent pas avoir la même clé; sinon je ne vois pas maintenant.

+0

Cette requête renvoie le même nombre de résultats, le membre "xx" renvoyant des valeurs pour toutes les lignes (même pour celles où Volume est nul). Tous les objets ont des clés différentes, donc même le premier MyObj1 a une clé différente de la seconde MyObj1 (la même chose s'applique à MyObj2) - pour chaque SimulationID, il existe une collection d'objets différente. – noup

+0

Il semble que vous ayez différents membres MDX avec le même nom, donc cela explique le résultat. –