2009-06-05 7 views
1

Je dois obtenir un membre de dimension renvoyé comme mesure calculée.Membre de dimension en tant que mesure calculée dans MDX

Étant donné:

Dimensions

  • client {ACME, EMCA, les importations Universal, Universal Exports}
  • Salesperson {Bob, Fred, Mary, Joe}
  • Type de crédit {Directeur, Gestionnaire}

Mesures

  • décomptées Valeur
  • Valeur

Relations

  • Le Client est une dimension des faits qui contiennent Valeur
  • Le client, le vendeur et le type de crédit sont des dimensions des faits contenir la valeur créditée

J'essaie de faire ce qui suit:

Créer des mesures calculées qui retourneront le vendeur avec le plus grand $ s crédités dans un rôle pour un client. par exemple.

| Customer   | Director | Manager | Value | 
|-------------------|----------|---------|-------| 
| ACME    | Bob  | Fred | 500 | 
| EMCA    | Bob  | Fred | 540 | 
| Universal Imports | Mary  | Joe  | 1000 | 
| Universal Exports | Mary  | Fred | 33 | 
  • ACME a Bob crédité de 490 en tant que directeur
  • ACME a Fred crédité de 500 en tant que directeur
  • ACME a Mary crédité 10 comme directeur

Je voudrais utiliser ceci en tant que mesure calculée que je peux utiliser dans tous les cas où les clients sont le droit de passage.

Répondre

1

Si je comprends bien votre problème, quelque chose le long de cette ligne devrait faire l'affaire (bien sûr que vous auriez à utiliser le niveau approprié, la hiérarchie et les cubes):

with 
    member [Measures].[DirectorTemp] as topcount([Salesperson].[Salesperson].members,1,([Measures].[Credited Value],[Credit Type].[Director],[Customer].currentmember)).item(0).properties("Caption") 
    member [Measures].[Director] as iif([Measures].[DirectorTemp] = [Salesperson].UnknownMember.properties("caption"), null, [Measures].[DirectorTemp]) 
    member [Measures].[ManagerTemp] as topcount([Salesperson].[Salesperson].members,1,([Measures].[Credited Value],[Credit Type].[Manager],[Customer].currentmember)).item(0).properties("Caption") 
    member [Measures].[Manager] as iif([Measures].[ManagerTemp] = [Salesperson].UnknownMember.properties("caption"), null, [Measures].[ManagerTemp]) 


    select 
     {[Measures].[Director],[Measures].[Manager],[Measures].[Value]} on 0, 
     {[Customer].members} on 1 
    from MyCube 
+0

Merci pour la réponse. Je l'ai adapté à mes données. Une question rapide. Si le Tuple renvoie un ensemble de none, j'obtiens le membre Unknown de la dimension Salesperson. Comment puis-je éviter ça? –

+0

J'ai modifié la requête pour qu'elle renvoie null au lieu de "Unknown". Un peu plus désordonné, mais ça devrait marcher ... –

+0

Merci. J'ai abordé légèrement différent. J'ai enveloppé un iff (isempty (** Définition Tuple **), NULL, TOPCOUNT .... Comme indiqué précédemment) pour accomplir un résultat similaire. Mon seul problème est que CurrentMember ne fonctionne pas correctement lorsque deux hiérarchies de la dimension client figurent dans l'instruction select et que les résultats sont filtrés. –

Questions connexes