Come escludere un determinato membro da una chiamata MDX che porta tutti i discendenti di un membro a un livello superiore

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

  •  02-07-2019
  •  | 
  •  

Domanda

In un database OLAP con cui lavoro c'è una gerarchia di 'Posizione' composta dai livelli Azienda - > Regione - > Area - > Sito - > Camera. Sto usando il seguente MDX per ottenere tutti i discendenti di un determinato membro a livello aziendale.

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

Ora ho l'obbligo di escludere una determinata regione, denominata "ridondante", dal rapporto. Come posso modificare il MDX sopra per escludere questa particolare Regione (e tutti i suoi discendenti)? So che questa regione verrà chiamata " ridondante " ma non voglio codificare in modo rigido nessuno degli altri nomi di Regione, poiché potrebbero cambiare.

È stato utile?

Soluzione

La funzione EXCEPT prenderà un set e rimuoverà i membri che non vuoi. Nel tuo caso devi dire:

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

Questo ti dà tutto nel primo set tranne quello che hai menzionato nel secondo. È più facile da capire in questo modo:

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

Non dovresti preoccuparti del terzo argomento (facoltativo): http: / /msdn.microsoft.com/en-us/library/ms144900.aspx

Altri suggerimenti

Quando restituisci membri per la tua gerarchia, usa semplicemente " - " per escludere un membro che non desideri. Ecco come escludo i membri sconosciuti:

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]}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top