2009-11-11 14 views
1

J'ai construit un cube contenant des informations sur les ventes de billets.Excluant le membre par défaut des calculs de mesure

J'ai une mesure qui est un nombre distinct de numéros de client de la table de faits. Les tickets invendus pour chaque performance sont enregistrés dans la table de faits et se voient attribuer un numéro de client "spécial" faisant référence à un enregistrement de client fictif.

Je voudrais que le nombre distinct de numéros de client ne compte pas le numéro de client «spécial» qui est utilisé pour les billets invendus.

Ma meilleure tentative jusqu'ici est de créer une mesure calculée qui exclut un seul numéro de client des résultats. Pour la requête ci-dessous, les chiffres sont corrects.

WITH SET [RealPeople] AS 
    Filter([Customers].[CustomerNumber].CHILDREN, 
      [Customers].[CustomerNumber].CurrentMember.MemberValue <> -100) 

MEMBER Measures.[Num Real Households] AS 
    DISTINCTCOUNT([RealPeople]) 

SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0, 
[Location].[PostalCode].CHILDREN ON 1 
FROM Tickets 

Mais cela ne fonctionne pas si l'utilisateur interroge la même dimension qui contient le numéro de client. Lorsque cela se produit, la mesure [Num Real Households] renvoie le nombre total de numéros de client distincts pour chaque membre d'attribut dans les résultats, au lieu de fournir des sous-totaux pour chaque membre d'attribut. J'ai réussi à contourner ce problème en créant une dimension cachée qui ne contient que les numéros de client. J'utilise cette dimension pour l'ensemble RealPeople. Personne n'interrogera cette dimension, alors j'ai évité le problème décrit ci-dessus.

Y a-t-il une meilleure façon de procéder?

Répondre

0

Je pense que la meilleure façon de le faire est avec Math simple. Subrant le numéro de ce client spécial de la mesure Distinct Count (cela ne fonctionne que parce que je suppose que vous ne pourriez jamais avoir un ticket "invendu" dans le même ménage qu'un ticket vendu)

WITH 
    MEMBER Measures.[Num Real Households] AS Measures.[Num Households] 
         - (Measures.[Num Households],[Customers].[CustomerNumber].&[-100]) 
SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0 
,[Location].[PostalCode].CHILDREN ON 1 
FROM Tickets