Condividi tramite


Ancestor (MDX)

Funzione che restituisce il predecessore di un membro specificato al livello specificato oppure alla distanza specificata dal membro.

Sintassi

Level syntax
Ancestor(Member_Expression, Level_Expression)

Numeric syntax
Ancestor(Member_Expression, Distance)

Argomenti

  • Member_Expression
    Espressione MDX (Multidimensional Expression) valida che restituisce un membro.

  • Level_Expression
    Espressione MDX (Multidimensional Expression) valida che restituisce un livello.

  • Distance
    Espressione numerica valida che specifica la distanza dal membro specificato.

Osservazioni

Con la funzione Ancestor, si specifica un'espressione di membro MDX per la funzione e quindi un'espressione MDX di un livello predecessore del membro oppure un'espressione numerica che rappresenta il numero di livelli superiori rispetto al membro. Con queste informazioni, la funzione Ancestors restituisce il membro predecessore a tale livello.

[!NOTA]

Per restituire un set di predecessori, anziché un membro predecessore, utilizzare la funzione Ancestors (MDX).

Se viene specificata un'espressione di livello, la funzione Ancestor restituisce il predecessore del membro specificato al livello specificato. Se il membro specificato non è incluso nella stessa gerarchia del livello specificato, la funzione restituisce un errore.

Se viene specificata una distanza, la funzione Ancestor restituisce il predecessore del membro specificato che si trova più in alto nella gerarchia del numero di posizioni specificato dall'espressione di membro. Un membro può essere specificato come membro di una gerarchia dell'attributo, una gerarchia definita dall'utente o, in alcuni casi, una gerarchia padre-figlio. Con il numero 1 viene restituito l'elemento padre di un membro, mentre con il numero 2 viene restituito l'elemento padre del padre di un membro, se esistente. Il numero 0 restituisce il membro stesso.

[!NOTA]

Questo utilizzo della funzione Ancestor è destinato ai casi in cui il livello del padre è sconosciuto o non può essere denominato.

Esempi

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 relativa percentuale sul totale delle vendite su Internet per l'Australia.

WITH MEMBER Measures.x AS [Measures].[Internet Sales Amount] / 
   (
   [Measures].[Internet Sales Amount],  
      Ancestor 
         (
         [Customer].[Customer Geography].CurrentMember,
            [Customer].[Customer Geography].[Country]
         )
   ), 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]

Nell'esempio seguente viene utilizzata un'espressione numerica e vengono restituiti l'importo delle vendite su Internet per ogni State-Province in Australia e la relativa percentuale sul totale delle vendite su Internet per tutti i paesi.

WITH MEMBER Measures.x AS [Measures].[Internet Sales Amount] / 
   (
      [Measures].[Internet Sales Amount],
         Ancestor 
            ([Customer].[Customer Geography].CurrentMember, 2)
   ), 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]