子系 (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) 運算式。
距離
有效的數值運算式,指定與指定成員的距離。
Desc_Flag
有效的字串運算式,指定可區分可能子系集合的描述旗標。
備註
如果指定了層級, 則 Descendants 函式會傳回集合,其中包含指定成員的子系或指定集合的成員,在指定的層級,選擇性地由Desc_Flag 中指定的 旗標修改。
如果 指定 Distance , 則 Descendants 函式會傳回集合,其中包含指定成員的子系,或指定集合的成員,這些集合是指定成員階層中指定層級數目的指定數目,選擇性地由Desc_Flag 中指定的 旗標修改。 一般而言,您可以使用此函式搭配 Distance 引數來處理不完全的階層。 如果指定的距離為零 (0),則函式會傳回只包含指定成員或指定集合的集合。
如果指定了集合運算式, 則會個別解析集合的每個成員的 Descendants 函式,並再次建立集合。 換句話說,子系 函式所使用的 語法在功能上相當於 MDX Generate 函式。
如果未指定層級或距離,則函式所使用的層級預設值取決於呼叫 Level 函式 ( << Member >> .指定成員的層級(如果指定成員),或呼叫 指定集合之每個成員的 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 | 傳回從下層到指定成員之層級的子代成員,並包含指定的成員。 |
葉 | 傳回指定成員與指定層級之間的分葉子系成員,或指定距離。 |
範例
下列範例會傳回指定的成員(美國),以及指定成員(美國)與指定層級(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])
下列範例會使用層級運算式,並傳回澳大利亞每個州省的網際網路銷售金額,並針對每個州省傳回澳大利亞的網際網路銷售總額百分比。 這個範例會使用 Item 函式,從上階函 式所 傳回的集合中擷取第一個 (且僅限) 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]