共用方式為


Descendants (MDX)

傳回特定層集或距離的成員之子系集合,選擇性包括或排除其他層級中的子系。

語法

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

引數

  • Member_Expression
    傳回成員的有效多維度運算式 (MDX) 運算式。

  • Set_Expression
    傳回集合的有效多維度運算式 (MDX) 運算式。

  • Level_Expression
    傳回層級的有效多維度運算式 (MDX) 運算式。

  • Distance
    有效的數值運算式,會指定與指定成員間的距離。

  • Desc_Flag
    指定描述旗標的有效字串運算式,以區分可能的下階集合。

備註

如果指定了層級,Descendants 函數會傳回一個集合,包含在指定層級上指定成員或指定集合之成員的下階,並選擇性地以 Desc_Flag 中指定的旗標加以修改。

如果指定 Distance,Descendants 函數會傳回一個集合,包含指定成員或指定集合之成員的下階,這些成員與階層中指定成員的距離就是已指定的層級數目,並選擇性地以 Desc_Flag 中指定的旗標加以修改。一般說來,您可以使用這個函數搭配 Distance 引數,來處理不完全階層。如果指定的距離是零 (0),此函數會傳回只由指定成員或指定集合所組成的集合。

如果指定了集合運算式,則會個別為集合的每個成員解析 Descendants 函數,然後重新建立集合。換句話說,Descendants 函數使用的語法,與 MDX Generate 函數的功能相同。

如果沒有指定層級或距離,有兩個方法可決定此函數所用層級的預設值:為指定的成員 (如果指定了成員) 呼叫 Level 函數 (<<Member>>.Level),或為指定之集合 (如果指定了集合) 的每個成員呼叫 Level 函數。如果沒有指定層級運算式、距離或旗標,函數執行方式就如同使用下列語法一樣:

Descendants

(

Member_Expression ,

Member_Expression.Level ,

SELF_BEFORE_AFTER

)

如果指定了層級運算式,而且沒有指定描述旗標,函數執行方式就如同使用下列語法一樣。

Descendants

(

Member_Expression ,

Level_Expression,

SELF

)

無論指定的層級或距離為何,您都可以藉由變更描述旗標的值,包含或排除已指定之層級或距離的下階、已指定之層級或距離前後 (直到分葉節點) 的子系,以及所有分葉子系。下表說明 Desc_Flag 引數中允許的旗標。

旗標

描述

SELF

只傳回指定層級或指定距離的下階成員。如果指定的層級是指定成員的層級,此函數會包含指定成員。

AFTER

傳回從屬於指定層級或距離之所有層級的下階成員。

BEFORE

傳回指定成員和指定層級 (或指定距離) 間所有層級的下階成員。包含指定成員,但不包含來自指定層級或距離的成員。

BEFORE_AND_AFTER

傳回從屬於指定成員層級之所有層級的下階成員。包含指定成員,但不包含來自指定層級或指定距離的成員。

SELF_AND_AFTER

傳回來自指定層級或指定距離的下階成員,以及從屬於指定層級或指定距離之所有層級的下階成員。

SELF_AND_BEFORE

傳回來自指定層級或指定距離的下階成員,以及介於指定成員和指定層級 (或指定距離) 之間所有層級的下階成員,包括指定的成員。

SELF_BEFORE_AFTER

傳回從屬於指定成員層級之所有層級的下階成員,並且包含指定的成員。

LEAVES

傳回介於指定成員和指定層級 (或指定距離) 之間的分葉下階成員。

範例

下列範例會傳回指定的成員 (United States),以及介於該指定成員 (United States) 和指定層級 (City) 上一個層級成員之間的成員。範例會傳回指定成員本身 (United States),以及 State-Province 層級 (City 層級的上一個層級) 的成員。這個範例包含標記為註解的引數,讓您能輕鬆測試這個函數的其他引數。

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] 

以下範例會計算出 Adventure Works Cube 的 2003 會計年度每月的每一日,傳回 Measures.[Gross Profit Margin] 量值的每日平均。Descendants 函數會傳回從 [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])

下列範例使用層級運算式,並且會傳回 Australia 每個 State-Province 的 Internet Sales Amount,及傳回每個 State-Province 佔 Australia 之 Internet Sales Amount 總計的百分比。這個範例使用 Item 函數,從 Ancestors 函數所傳回的集合擷取第一個 (也是唯一的) Tuple。

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]

請參閱

參考