2010-01-14 3 views
12

J'ai une requête MDX avec le membre calculé suivant:MDX Membre calculé CrossJoin question

with member [Measures].[BBOX] as 
Count(
    Filter(
     CrossJoin([Dim Response].[Response ID].Children, [Dim Question].[Question Text].Children), 
     [Measures].[Question Bottom Box] > 0 
    ) 
) 

L'idée est que je veux un compte des combinaisons de deux membres d'une dimension. (Pardonnez-moi si mon vocabulaire MDX est un peu éteint). Il est également basé sur certains critères.

Le reste de la requête ressemble à ceci:

select 
{({[Measures].[TBOX], [Measures].[BBOX]}, 
[Dim Product].[Category Name].&[Office])} on columns, 
{[Dim Question].[Question Text].Members} on rows 
from H1_FY10_Revised 
where ({[Dim Question].[Category Name].&[Partner]}, 
{[Dim Subsidiary].[Subsidiary Alias Name].&[Germany]}) 

Ma question est: ce que le découpage des données qui se produit dans la requête principale (la clause WHERE) se traduisent par le membre calculé? Existe-t-il une sorte de jointure implicite entre les données qui reviennent du membre calculé et les axises dans la requête principale?

Ou une autre façon de l'exprimer: la jointure croisée dans le membre calculé s'exécute-t-elle dans le contexte de la requête principale?

+2

Je me sens idiot maintenant. Je crois que j'ai trouvé le problème. La façon d'inclure le contexte de la requête est d'utiliser .CurrentMember au lieu de .Member ou .Children. De cette façon, je reçois le membre approprié dans le contexte de la requête. Ah MDX ... – Ryan

+0

Oui, vous l'avez. – jvilalta

+2

Vous devriez publier ceci comme réponse ci-dessous. – Sampson

Répondre

2

L'évaluation du CrossJoin ne dépend pas du contexte, mais de la fonction Filtre.

membres sont calculés évalués dans le contexte de la requête bu votre membre calculé peut avoir une valeur constante parce que:

  • .Enfants est équivalent à [Réponse Dim] [Dim réponse] [ID réponse].. [Réponse ID]. DefaultMember .Enfants (voir MSDN).
  • [Question pâle]. [Texte de la question] .Les enfants sont équivalents à [Question faible]. [Texte de la question]. DefaultMember .Enfants

Ainsi, le résultat de la CrossJoin ne dépend pas de la trancheuse. Seule la valeur de [Measures].[Question Bottom Box] dépendra de la trancheuse.

Questions connexes