Come escludere un determinato membro da una chiamata MDX che porta tutti i discendenti di un membro a un livello superiore
-
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.
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]}