Como excluir um determinado membro de uma chamada MDX que recebe todos os descendentes de um membro em um nível superior

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Em um OLAP banco de dados que eu trabalho com há um 'Location' hierarquia consiste nos níveis Company -> Região -> Área -> Site -> quarto. Eu estou usando o seguinte MDX para obter todos os descendentes de um membro em particular ao nível da empresa.

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

Agora tenho um requisito para excluir uma determinada região, chamada "redundante", a partir do relatório. Como posso mudar o acima MDX para excluir esta região em particular (e todos os seus descendentes)? Eu sei que esta região será chamado de "redundante", mas eu não quero codificar qualquer um dos outros nomes Região, uma vez que estes podem mudar.

Foi útil?

Solução

O EXCETO função terá um conjunto, e destituir os membros que você não quer. No seu caso, você precisa dizer:

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

Isto dá-lhe tudo no primeiro set, exceto o que você mencionou na segunda. É mais fácil entender como isto:

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

Você não deve precisar se preocupar com o terceiro (opcional) argumento: http: / /msdn.microsoft.com/en-us/library/ms144900.aspx

Outras dicas

Ao retornar membros de sua hierarquia simplesmente usar "-" para excluir um membro que você não quer. Isto é como eu excluir membros desconhecidos:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top