2011-04-29 13 views
0

Je me demande comment exclure certains membres d'une dimension qui ont des liens avec d'autres membres d'une autre dimension ... disons que je veux exclure les clients (dim_clients) qui ont un statut A OU un statut B (dim_status). Je sais comment croiser les deux dimensions pour obtenir ces clients mais je n'arrive pas à comprendre comment les exclure de mon calcul puisque la fonction EXCEPT accepte deux ensembles de même dimension mais ceux que je veux exclure sont le résultat d'un crossjoin opération, je ne peux pas utiliser la fonction saufMDX - comment exclure certains membres dans mdx

je veux quelque chose comme ceci:

SELECT Measure.MyMeasure ON 0 
FROM MyCUBE 
WHERE 
EXCEPT([DIM CLIENTS].[Clients], [EXCLUDED CLIENTS]) 

Merci

Répondre

1
SELECT Measure.MyMeasure ON 0 
FROM MyCUBE 
WHERE 
EXCEPT([DIM CLIENTS].[Clients], Filter({[DIM CLIENTS].[Clients]},[DIM_STATUS].CurrentMember IS [DIM_STATUS].statusA OR [DIM_STATUS].CurrentMember IS [DIM_STATUS].statusA)) 

Je ne suis pas sûr de ce que [Clients] est. J'utiliserais cependant les membres.

0

Vous pouvez utiliser la fonction Extract() pour obtenir l'ensemble des clients exclus du droit dimensionnalité:

where - Extract({ [EXCLUDED CLIENTS] }, [DIM CLIENTS].[Clients]) 

Notez l'opérateur unaire pour effectuer l'opération sauf.