Share via


Descendants (MDX)

Devuelve el conjunto de descendientes de un miembro en el nivel o distancia especificados; opcionalmente puede incluir o excluir los descendientes de otros niveles.

Sintaxis

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 ] ] )

Argumentos

  • Member_Expression
    Expresión MDX válida que devuelve un miembro.

  • Set_Expression
    Expresión MDX válida que devuelve un conjunto.

  • Level_Expression
    Expresión MDX válida que devuelve un nivel.

  • Distance
    Expresión numérica válida que especifica la distancia desde el miembro especificado.

  • Desc_Flag
    Expresión de cadena válida que especifica un indicador de descripción que distingue entre posibles conjuntos de descendientes.

Comentarios

Si se especifica un nivel, la función Descendants devuelve un conjunto que contiene los descendientes del miembro especificado o los miembros del conjunto especificado, en un nivel especificado, modificado opcionalmente mediante un indicador especificado en Desc_Flag.

Si se especifica Distance, la función Descendants devuelve un conjunto que contiene los descendientes del miembro especificado o los miembros del conjunto especificado que son el número de niveles especificado fuera de la jerarquía del miembro especificado, modificado opcionalmente mediante un indicador especificado en Desc_Flag. Esta función se suele utilizar con el argumento Distance para tratar con jerarquías desiguales. Si la distancia especificada es cero (0), la función devuelve un conjunto que consta sólo del miembro especificado o el conjunto especificado.

Si se especifica una expresión de conjunto, la función Descendants se resuelve individualmente para cada miembro del conjunto y éste se crea de nuevo. En otras palabras, la sintaxis utilizada para la función Descendants es funcionalmente equivalente a la función Generate de MDX.

Si no se especifica un nivel o una distancia, el valor predeterminado del nivel utilizado por la función se determina al llamar a la función Level (<<Member>>.Level) del miembro especificado (si se especificó un miembro) o al llamar a la función Level de cada miembro del conjunto especificado (si se especificó un conjunto). Si no se especifican una expresión de nivel, una distancia o indicadores, la función tiene el mismo efecto que el uso de la sintaxis siguiente:

Descendants

(

Member_Expression ,

Member_Expression.Level ,

SELF_BEFORE_AFTER

)

Si se especifica un nivel y no se especifica un indicador de descripción, la función tiene el mismo efecto que el uso de la sintaxis siguiente.

Descendants

(

Member_Expression ,

Level_Expression,

SELF

)

Mediante la modificación del valor del indicador de descripción, puede incluir o excluir descendientes en el nivel o distancia especificados, el elemento secundario anterior o posterior al nivel o distancia especificados (hasta el nodo hoja), así como los elementos secundarios hoja, independientemente del nivel o distancia especificados. En la tabla siguiente se describen los indicadores permitidos en el argumento Desc_Flag.

Indicador

Descripción

SELF

Devuelve sólo los miembros descendientes desde el nivel especificado o a la distancia especificada. La función incluye el miembro especificado si el nivel especificado es el del miembro especificado.

AFTER

Devuelve los miembros descendientes de todos los niveles subordinados al nivel o distancia especificados.

BEFORE

Devuelve los miembros descendientes de todos los niveles entre el miembro especificado y el nivel especificado, o a la distancia especificada. Incluye el miembro especificado, pero no incluye miembros del nivel o la distancia especificados.

BEFORE_AND_AFTER

Devuelve los miembros descendientes de todos los niveles subordinados al nivel del miembro especificado. Incluye el miembro especificado, pero no incluye miembros del nivel especificado o a la distancia especificada.

SELF_AND_AFTER

Devuelve los miembros descendientes desde el nivel especificado o a la distancia especificada y todos los niveles subordinados al nivel especificado o a la distancia especificada.

SELF_AND_BEFORE

Devuelve los miembros descendientes desde el nivel especificado o a la distancia especificada y desde todos los niveles entre el miembro especificado y el nivel especificado, o a la distancia especificada, incluido el miembro especificado.

SELF_BEFORE_AFTER

Devuelve los miembros descendientes de todos los niveles subordinados al nivel del miembro especificado e incluye éste.

LEAVES

Devuelve los miembros descendientes hoja entre el miembro especificado y el nivel especificado, o a la distancia especificada.

Ejemplos

El ejemplo siguiente devuelve el miembro especificado (United States) y los miembros entre el miembro especificado (United States) y los miembros del nivel anterior al nivel especificado (City). El ejemplo devuelve el propio miembro especificado (United States) y los miembros del nivel State-Province (el nivel anterior al nivel City). Este ejemplo incluye argumentos comentados para permitir probar de manera sencilla otros argumentos para esta función.

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] 

El siguiente ejemplo devuelve el promedio diario de la medida Measures.[Gross Profit Margin], calculada en los días de cada mes del año fiscal 2003, a partir del cubo Adventure Works. La función Descendants devuelve un conjunto de días determinado en el miembro actual de la jerarquía [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])

El ejemplo siguiente utiliza una expresión de nivel y devuelve Internet Sales Amount para cada State-Province de Australia, junto con el porcentaje del total de Internet Sales Amount para Australia para cada State-Province. Este ejemplo utiliza la función Item para extraer la primera (y única) tupla del conjunto devuelto por la función 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]

Vea también

Referencia