filter mdx member dimension

filter - MDX Miembro de filtro calculado por atributo de dimensión



member dimension (2)

Prueba esta sintaxis:

SUM({[Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy]}, [Measures].[FK Policy Distinct Count])

Quiero crear un miembro calculado y filtrarlo por dimensión. Este es un ejemplo FUNCIONAL:

( [Policy].[Policy Status].&[Void], [Policy].[Tran Type].&[Renewal], [Measures].[FK Policy Distinct Count] )

Pero si quiero filtrarlo así

( [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy], [Measures].[FK Policy Distinct Count] )

De lo que NO está funcionando. Dice que la misma jerarquía se muestra varias veces en la tupla.

Otra cosa es, ¿cómo excluir filas? Aquí está la idea ...

( ![Policy].[Policy Status].&[Void], ![Policy].[Policy Status].&[Policy], [Measures].[FK Policy Distinct Count] )


En primer lugar, es importante comprender la sintaxis de MDX y cómo se relaciona con los conceptos de tuplas, miembros y conjuntos .

Tuples

El uso de paréntesis denota una tupla:

( [Policy].[Policy Status].&[Void], [Policy].[Tran Type].&[Renewal], [Measures].[FK Policy Distinct Count] )

Una tupla solo puede incluir un único miembro de cualquier jerarquía.

Conjuntos

Para recuperar resultados de múltiples miembros en la misma jerarquía, debe consultar un conjunto. Un conjunto MDX se denota con llaves:

{ [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy] }

Un conjunto es, por definición ,

una colección ordenada de cero, una o más tuplas.

Por lo tanto, si desea consultar la medida [FK Policy Distinct Count] contra ambos miembros, las tuplas del conjunto deben incluir cada una de ellas:

{ ( [Policy].[Policy Status].&[Void], [Measures].[FK Policy Distinct Count] ), ( [Policy].[Policy Status].&[Policy], [Measures].[FK Policy Distinct Count] ) }

Para simplificar esta expresión, es posible unir dos conjuntos de diferente dimensionalidad:

{ [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy], [Policy].[Policy Status].&[Something], [Policy].[Policy Status].&[Something else], [Policy].[Policy Status].&[Yet another member] } * { [Measures].[FK Policy Distinct Count] }

Excluyendo filas

Ahora que podemos definir conjuntos, es hora de eliminar algunos miembros de uno. En su ejemplo, parece que desea comenzar con un nivel (que, para el motor MDX, es solo un conjunto predefinido en el cubo que incluye a cada miembro en ese nivel de la jerarquía) y excluir ciertos miembros. MDX tiene muchas funciones que operan en conjuntos, y vamos a usar EXCEPT .

La función EXCEPT toma dos parámetros , el primero es el conjunto para eliminar, y el segundo es el conjunto que debe eliminarse del primero. Devuelve un conjunto.

En este ejemplo, voy a asumir [Policy].[Policy Status] es una jerarquía de atributo, y que su único nivel tiene el Nombre único de [Policy].[Policy Status].[Policy Status] .

EXCEPT( [Policy].[Policy Status].[Policy Status], { [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy] } )

Esto devolverá a cada miembro del estado [Policy].[Policy Status].[Policy Status] , a excepción de [Policy].[Policy Status].&[Void] y [Policy].[Policy Status].&[Policy]

Para obtener resultados útiles, podemos combinar el resultado mediante una medida:

EXCEPT( [Policy].[Policy Status].[Policy Status], { [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy] } ) * { [Measures].[FK Policy Distinct Count] }

Usando un conjunto como un solo miembro

Los conjuntos son agradables, pero a veces lo único que queremos de ellos es tratarlos como un solo miembro, como en su requisito de miembro calculado. Para hacer esto, necesitamos usar una función de agregación. Las funciones de agregación toman un conjunto y devuelven un miembro que representa todo el conjunto.

Hay varios de estos, y el correcto para usar depende de los datos almacenados en su cubo: MIN , MAX , COUNT y SUM son algunos de ellos (consulte "Funciones numéricas" en la referencia de la función MDX para obtener una lista más completa). ) En este ejemplo, asumiré los agregados de su dimensión usando SUM:

SUM( EXCEPT( [Policy].[Policy Status].[Policy Status], { [Policy].[Policy Status].&[Void], [Policy].[Policy Status].&[Policy] } ), [Measures].[FK Policy Distinct Count] )

Aquí, he pasado la medida para agregarla como el segundo parámetro a SUMA.

MDX es un lenguaje complejo que admite muchas operaciones de conjunto comunes e inusuales. Si aún no lo ha hecho, le aconsejo que se tome el tiempo de leer la documentación disponible en línea, o tome un buen libro de MDX. Hay mucho que saber :)

<3