Compartilhar via


Descendants (MDX)

Retorna o conjunto de descendentes de um membro em uma distância ou nível especificado, incluindo ou excluindo, opcionalmente, descendentes em outros níveis.

Sintaxe

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
    Uma linguagem MDX válida que retorna um membro.

  • Set_Expression
    Uma linguagem MDX válida que retorna um conjunto.

  • Level_Expression
    Uma linguagem MDX válida que retorna um nível.

  • Distance
    Uma expressão numérica válida que especifica a distância do membro especificado.

  • Desc_Flag
    Uma expressão de cadeia de caracteres válida que especifica um sinalizador de descrição que distingue entre possíveis conjuntos de descendentes.

Comentários

Se um nível for especificado, a função Descendants retornará um conjunto que contém descendentes do membro especificado ou membros do conjunto especificado, em um nível especificado, opcionalmente modificado por um sinalizador especificado em Desc_Flag.

Se Distance for especificado, a função Descendants retornará um conjunto que contém descendentes do membro especificado ou membros do conjunto especificado que são o número especificado de nível fora da hierarquia do membro especificado, opcionalmente modificado por um sinalizador especificado em Desc_Flag. Normalmente, você usa esta função com o argumento Distance para lidar com hierarquias com rotas. Se a distância especificada for zero (0), a função retornará um conjunto composto apenas pelo membro especificado ou pelo conjunto especificado.

Se uma expressão de conjunto for especificada, a função Descendants será resolvida individualmente para cada membro do conjunto, e o conjunto será criado novamente. Em outras palavras, a sintaxe usada para a função Descendants é funcionalmente equivalente à função MDX Generate.

Se nenhum nível ou distância for especificado, o valor padrão para o nível usado pela função será determinado chamando a função Level (<<Member>>Level) para o membro especificado (se um membro estiver especificado) ou chamando a função Level para cada membro do conjunto especificado (se um conjunto estiver especificado). Se nenhuma expressão de nível, distância ou sinalizadores forem especificados, a função será executada como se a sintaxe seguinte fosse usada:

Descendants

(

Member_Expression ,

Member_Expression.Level ,

SELF_BEFORE_AFTER

)

Se um nível for especificado e um sinalizador de descrição não for, a função será executada como se a sintaxe seguinte fosse usada.

Descendants

(

Member_Expression ,

Level_Expression,

SELF

)

Alterando o valor do sinalizador de descrição, você pode incluir ou excluir descendentes no nível ou na distância especificada, o filho antes ou depois de um nível ou distância especificada (até o nó folha), e a folha filha, independentemente do nível ou da distância especificada. A tabela a seguir descreve os sinalizadores permitidos no argumento Desc_Flag.

Sinalizador

Descrição

SELF

Só retorna membros descendentes do nível especificado ou à distância especificada. A função inclui o membro especificado, se o nível especificado for o nível do membro especificado.

AFTER

Retorna os membros descendentes de todos os níveis subordinados ao nível especificado ou à distância.

BEFORE

Retorna membros descendentes de todos os níveis entre o membro especificado e o nível especificado ou à distância especificada. Inclui o membro especificado, mas não inclui membros do nível especificado ou distância.

BEFORE_AND_AFTER

Retorna membros descendentes de todos os níveis subordinados ao nível do membro especificado. Inclui o membro especificado, mas não inclui membros do nível especificado ou à distância especificada.

SELF_AND_AFTER

Retorna membros descendentes do nível especificado ou à distância especificada e todos os níveis subordinados ao nível especificado ou à distância especificada.

SELF_AND_BEFORE

Retorna membros descendentes do nível especificado ou à distância especificada e de todos os níveis entre o membro especificado e o nível especificado ou à distância especificada, incluindo o membro especificado.

SELF_BEFORE_AFTER

Retorna membros descendentes de todos os níveis subordinados ao nível do membro especificado e inclui o membro especificado.

LEAVES

Retorna membros descendentes de folha entre o membro especificado e o nível especificado ou à distância especificada.

Exemplos

O exemplo a seguir retorna o membro especificado (Estados Unidos) e os membros entre o membro especificado (Estados Unidos) e os membros do nível anterior ao nível especificado (Cidade). O exemplo retorna o próprio membro especificado (Estados Unidos) e os membros do nível Estado-Província (o nível antes do nível Cidade). Esse exemplo inclui argumentos comentados para permitir que você teste outros argumentos facilmente para essa função.

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] 

O exemplo a seguir retorna a média diária da medida Measures.[Gross Profit Margin], calculada com base nos dias de cada mês do ano fiscal de 2003, a partir do cubo Adventure Works. A função Descendants retorna um conjunto de dias determinado do membro atual da hierarquia [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])

O exemplo a seguir usa uma expressão de nível e retorna o Valor de Vendas pela Internet para cada Estado-Província da Austrália, e retorna a porcentagem do total do Valor de Vendas pala Internet para a Austrália para cada Estado-Província. Esse exemplo usa a função Item para extrair a primeira (e única) tupla do conjunto que é retornado pela função 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]

Consulte também

Referência