2010-01-14 26 views
12

tengo una consulta MDX con el siguiente miembro calculado:MDX miembro calculado pregunta CrossJoin

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

La idea es que quiero un recuento de las combinaciones de dos miembros de una dimensión. (Perdóname si mi vocabulario MDX está un poco apagado). También se basa en algunos criterios.

El resto de la consulta es el siguiente:

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]}) 

Mi pregunta es: ¿el corte en rodajas de datos que se produce en la consulta principal (la cláusula where) se traducen en el miembro calculado? ¿Hay algún tipo de unión implícita entre los datos que provienen del miembro calculado y los ejes en la consulta principal?

O bien, otra forma de expresarlo: ¿se ejecuta la combinación cruzada en el miembro calculado en el contexto de la consulta principal?

+2

Me siento tonto ahora. Creo que encontré el problema. La forma de incluir el contexto de la consulta es usar .CurrentMember en lugar de .Member o .Children. De esa forma obtendré el miembro apropiado en el contexto de la consulta. Ah MDX ... – Ryan

+0

Sí, lo tienes. – jvilalta

+2

Deberías publicar eso como respuesta a continuación. – Sampson

Respuesta

2

La evaluación de CrossJoin no depende del contexto, pero la función de filtro sí lo hace.

miembros calculados son evaluadas en el contexto de la consulta bu su miembro calculado puede tener un valor constante porque:

  • [Dim Respuesta] [Respuesta ID] .Los niños es equivalente a [Dim Respuesta].. [Identificador de respuesta]. DefaultMember .Niños (ver MSDN).
  • [Dim Question]. [Question Text] .Children es equivalente a [Dim Question]. [Question Text]. DefaultMember .Niños

Así, el resultado de la CrossJoin no depende de la máquina de cortar. Solo el valor de [Measures].[Question Bottom Box] dependerá de la segmentación.

Cuestiones relacionadas