後裔(MDX)

回傳成員在指定層級或距離的後代集合,可選擇性地包含或排除其他層級的後代。

Syntax

  
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)表達式,能回傳一個層級。


一個有效的數值表達式,用來指定與該成員的距離。

Desc_Flag
一個有效的字串表達式,指定一個描述標誌,用以區分可能的後代集合。

備註

若指定層級, Descendants 函式會回傳一個集合,包含指定成員或該集合成員的後代,且在指定層級可選擇性地修改 Desc_Flag 中指定的旗標。

若指定距離,Descendants 函式會回傳一個集合,包含指定成員的後代,或該集合中在該成員階層中指定層級數之外的成員,並可選擇性地以 Desc_Flag 中指定的旗標修改。 通常,你會用這個函式搭配 Distance 參數來處理不規則的階層結構。 若指定距離為零(0),函數回傳的集合僅包含指定成員或指定集合。

若指定集合表達式,則會針對集合中的每個成員分別解析後 函數,並重新建立該集合。 換句話說, Descendants 函式所用語法在功能上等價於 MDX 的 Generate 函式。

若未指定層級或距離,函式所用層級的預設值則由呼叫 Level 函數(<<Member>>.若指定成員,則為 Level)或為指定集合中的每個成員呼叫 Level 函式(若指定集合)。 若未指定電平表達式、距離或旗標,該函式的運作方式如下:

Descendants  
(  
Member_Expression ,  
Member_Expression.Level ,  
SELF_BEFORE_AFTER  
)  

若指定層級且未指定描述標誌,函式的運作方式就如同使用以下語法。

Descendants  
(  
Member_Expression ,  
Level_Expression,  
SELF  
)  

透過更改描述旗標的值,你可以包含或排除指定層級或距離的後代、指定層級或距離前後的子節點(直到葉節點),以及葉子節點,無論指定層級或距離如何。 下表說明 Desc_Flag 參數中允許的旗標。

Flag Description
SELF 僅返回指定層級或指定距離的後代成員。 若指定的層級即為該成員的層級,則函數包含該成員。
之後 回傳所有下屬於指定層級或距離的後代成員。
之前 回傳來自指定成員與指定層級之間所有層級,或在指定距離處的後代成員。 它包含指定的構件,但不包含指定層級或距離的構件。
BEFORE_AND_AFTER 回傳所有低於指定成員層級的後代成員。 它包含指定的成員,但不包含指定層級或距離的成員。
SELF_AND_AFTER 回傳指定層級或指定距離的後代成員,以及所有低於指定層級或指定距離的層級。
SELF_AND_BEFORE 回傳來自指定層級或指定距離的後代成員,以及該成員與指定層級之間所有層級,或在指定距離內,包括該成員的後代成員。
SELF_BEFORE_AFTER 回傳所有隸屬於指定成員層級的後代成員,並包含指定成員。
葉片 回傳指定成員與指定層級之間,或指定距離的葉子後代成員。

Examples

以下範例回傳指定的成員(美國),以及介於指定成員(美國)與指定層級前的成員(城市)之間的成員,範例回傳指定的成員本身(美國),以及 State-Province 層級的成員(城市層級前的層級)。 此範例包含註解參數,方便你測試其他函式參數。

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]   

以下範例回傳了2003財政年度中每個月天數計算出的 Measures.[Gross Profit Margin] 每日平均值,該數據來自 冒險工作方塊後裔函數回傳一組由階層中當前成員[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])  

以下範例使用水準表達式,回傳澳洲每個 State-Province 的網路銷售金額,並回傳各州省佔澳洲總網路銷售金額的百分比。 此範例使用 Item 函數從 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]