2008-09-29 7 views
11

En una base de datos OLAP con la que trabajo hay una jerarquía 'Ubicación' que consiste en los niveles Compañía -> Región -> Área - > Sitio -> Habitación. Estoy usando el siguiente MDX para obtener todos los descendientes de un miembro en particular a nivel de compañía.Cómo excluir un determinado miembro de una llamada MDX que obtiene todos los descendientes de un miembro en un nivel superior

DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE) 

Ahora tengo un requisito para excluir una Región particular, llamada "Redundante", del informe. ¿Cómo puedo cambiar el MDX anterior para excluir esta región en particular (y todos sus descendientes)? Sé que esta región se llamará "redundante", pero no quiero codificar ninguno de los otros nombres de la región, ya que pueden cambiar.

Respuesta

21

La función EXCEPT tomará un conjunto y eliminará los miembros que no desee. En su caso, necesita decir:

EXCEPT(
{DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)}, 
{DESCENDANTS([Location].[Whatever].[Redundant],[Location].[Site], SELF_AND_BEFORE)} 
) 

Esto le da todo en el primer conjunto, excepto lo que ha mencionado en el segundo. Es más fácil de entender como esto:

EXCEPT({the set i want}, {a set of members i dont want}) 

Usted no debe tiene que preocuparse por el tercero (opcional) argumento: http://msdn.microsoft.com/en-us/library/ms144900.aspx

0

Al devolver los miembros de la jerarquía de simplemente utilizar "-" para excluir a un miembro usted don' t quiero. Así es como excluyo miembros desconocidos:

select 
{[Module].[Hierarchy].[Module].Members - [Module].[Hierarchy].[Module].[Unknown]} on rows, 
{[Date].[Month-day].[Day Of Month].Members - [Date].[Month-day].[Day Of Month].[Unknown]} on  columns 
from [StatsView] 
where {[Measures].[Maintainability Index]} 
Cuestiones relacionadas