回傳成員在指定層級或距離的後代集合,可選擇性地包含或排除其他層級的後代。
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]