Cómo excluir a un miembro determinado de una llamada MDX que obtiene todos los descendientes de un miembro en un nivel superior

StackOverflow https://stackoverflow.com/questions/148875

  •  02-07-2019
  •  | 
  •  

Pregunta

En una base de datos OLAP con la que trabajo hay una jerarquía de 'Ubicación' que consta de los niveles Empresa - > Región - > Área - > Sitio - > Habitación. Estoy usando el siguiente MDX para obtener todos los descendientes de un miembro en particular a nivel de empresa.

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

Ahora tengo el requisito de excluir una región particular, denominada "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 Región, ya que pueden cambiar.

¿Fue útil?

Solución

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

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

Esto te da todo en el primer conjunto, excepto lo que mencionaste en el segundo. Es más fácil de entender así:

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

No debe preocuparse por el tercer argumento (opcional): http: / /msdn.microsoft.com/en-us/library/ms144900.aspx

Otros consejos

Cuando devuelva miembros para su jerarquía simplemente use " - " para excluir a un miembro que no desea. Así es como excluyo a los 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]}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top