Descendants (MDX)
Restituisce il set di discendenti di un membro al livello o alla distanza specificata, includendo o escludendo facoltativamente i discendenti in altri livelli.
Sintassi
Member expression syntax using a level expression
Descendants(Member_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Member_Expression [ , Distance [ ,Desc_Flag ] ] )
Set expression syntax using a level expression
Descendants(Set_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Set_Expression [ , Distance [ ,Desc_Flag ] ] )
Argomenti
Member_Expression
Espressione MDX (Multidimensional Expression) valida che restituisce un membro.Set_Expression
Espressione MDX (Multidimensional Expression) valida che restituisce un set.Level_Expression
Espressione MDX (Multidimensional Expression) valida che restituisce un livello.Distance
Espressione numerica valida che specifica la distanza dal membro specificato.Desc_Flag
Espressione stringa valida che specifica un flag descrittivo che distingue i possibili set di discendenti.
Osservazioni
Se viene specificato un livello, la funzione Descendants restituisce un set contenente i discendenti del membro specificato o dei membri del set specificato, al livello specificato, modificato facoltativamente da un flag specificato in Desc_Flag.
Se si specifica Distance, la funzione Descendants restituisce un set contenente i discendenti del membro specificato o dei membri del set specificato che si trovano al numero di livelli di distanza specificato nella gerarchia del membro specificato, modificato facoltativamente da un flag specificato in Desc_Flag. Questa funzione viene in genere utilizzata con l'argomento Distance per gestire gerarchie incomplete. Se la distanza specificata è zero (0), la funzione restituisce un set costituito soltanto dal membro specificato o dal set specificato.
Se viene specificata un'espressione set, la funzione Descendants viene risolta singolarmente per ogni membro del set e il set viene creato nuovamente. In altri termini, la sintassi utilizzata per la funzione Descendants equivale dal punto di vista funzionale alla funzione MDX Generate.
Se non si specifica un livello o una distanza, il valore predefinito del livello utilizzato dalla funzione viene determinato chiamando la funzione Level (<<Member>>.Level) per il membro specificato, se è indicato un membro, oppure chiamando la funzione Level per ogni membro del set specificato, se è indicato un set. Se non si specifica un'espressione di livello o la distanza o non vengono specificati flag, la funzione viene eseguita come se fosse stata utilizzata la sintassi seguente:
Descendants
(
Member_Expression ,
Member_Expression.Level ,
SELF_BEFORE_AFTER
)
Se si specifica un livello e non viene specificato un flag descrittivo, la funzione viene eseguita come se fosse stata utilizzata la sintassi seguente:
Descendants
(
Member_Expression ,
Level_Expression,
SELF
)
Modificando il valore del flag descrittivo è possibile includere o escludere i discendenti alla distanza o al livello specificato, gli elementi figlio prima o dopo la distanza o il livello specificato (fino al nodo foglia) e tutti gli elementi figlio di tipo foglia indipendentemente dalla distanza o dal livello specificato. Nella tabella seguente vengono descritti i flag consentiti nell'argomento Desc_Flag.
Flag |
Descrizione |
---|---|
SELF |
Restituisce soltanto i membri discendenti alla distanza indicata o del livello specificato. La funzione include il membro specificato, se il livello specificato corrisponde al livello di tale membro. |
AFTER |
Restituisce i membri discendenti di tutti i livelli subordinati alla distanza indicata o al livello specificato. |
BEFORE |
Restituisce i membri discendenti di tutti i livelli tra il membro specificato e il livello specificato oppure alla distanza indicata. Include il membro specificato, ma non i membri della distanza indicata o del livello specificato. |
BEFORE_AND_AFTER |
Restituisce i membri discendenti di tutti i livelli subordinati al livello del membro specificato. Include il membro specificato, ma non i membri del livello specificato o alla distanza indicata. |
SELF_AND_AFTER |
Restituisce i membri discendenti del livello specificato o alla distanza indicata e di tutti i livelli subordinati al livello specificato oppure alla distanza indicata. |
SELF_AND_BEFORE |
Restituisce i membri discendenti del livello specificato o alla distanza indicata e di tutti i livelli tra il membro specificato e il livello specificato oppure alla distanza indicata, includendo il membro specificato. |
SELF_BEFORE_AFTER |
Restituisce i membri discendenti di tutti i livelli subordinati al livello del membro specificato, includendo tale membro. |
LEAVES |
Restituisce i membri discendenti di tipo foglia tra il membro specificato e il livello specificato oppure alla distanza indicata. |
Esempi
Nell'esempio seguente vengono restituiti il membro specificato (United States) e i membri tra il membro specificato (United States) e i membri del livello che precede il livello specificato (City). Vengono quindi restituiti il membro specificato stesso (United States) e i membri del livello State-Province, che precede il livello City. Nell'esempio sono inclusi argomenti impostati come commenti che consentono di testare facilmente altri argomenti per questa funzione.
SELECT Descendants
([Geography].[Geography].[Country].&[United States]
//, [Geography].[Geography].[Country]
, [Geography].[Geography].[City]
//, [Geography].[Geography].Levels (3)
//, SELF
//, AFTER
, BEFORE
// BEFORE_AND_AFTER
//, SELF_AND_AFTER
//, SELF_AND_BEFORE
//,SELF_BEFORE_AFTER
//,LEAVES
) ON 0
FROM [Adventure Works]
Nell'esempio seguente viene restituita la media giornaliera della misura Measures.[Gross Profit Margin], calcolata sui giorni di ogni mese dell'anno fiscale 2003, dal cubo Adventure Works. La funzione Descendants restituisce un set di giorni determinato dal membro corrente della gerarchia [Date].[Fiscal].
WITH MEMBER Measures.[Avg Gross Profit Margin] AS Avg
(
Descendants( [Date].[Fiscal].CurrentMember,
[Date].[Fiscal].[Date]
),
Measures.[Gross Profit Margin]
)
SELECT
Measures.[Avg Gross Profit Margin] ON COLUMNS,
[Date].[Fiscal].[Month].Members ON ROWS
FROM [Adventure Works]
WHERE ([Date].[Fiscal Year].&[2003])
Nell'esempio seguente viene utilizzata un'espressione di livello e vengono restituiti l'importo delle vendite su Internet per ogni State-Province in Australia e la percentuale sul totale delle vendite su Internet per l'Australia per ogni State-Province. Nell'esempio, la funzione Item viene utilizzata per estrarre la prima e unica tupla dal set restituito dalla funzione Ancestors.
WITH MEMBER Measures.x AS
[Measures].[Internet Sales Amount] /
( [Measures].[Internet Sales Amount],
Ancestors
( [Customer].[Customer Geography].CurrentMember,
[Customer].[Customer Geography].[Country]
).Item (0)
), FORMAT_STRING = '0%'
SELECT {[Measures].[Internet Sales Amount], Measures.x} ON 0,
{Descendants
( [Customer].[Customer Geography].[Country].&[Australia],
[Customer].[Customer Geography].[State-Province], SELF
)
} ON 1
FROM [Adventure Works]