返回成员在指定层级或距离上的后代集合,可选择包含或排除其他层级的后代。
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 ] ] )
Arguments
Member_Expression
一个有效的多维表达式(MDX)表达式,返回成员。
Set_Expression
一个有效的多维表达式(MDX)表达式,返回集合。
Level_Expression
一个有效的多维表达式(MDX)表达式,返回一个层级。
距离
一个有效的数值表达式,用来指定距离指定成员的距离。
Desc_Flag
一个有效的字符串表达式,指定描述标志,用于区分可能的后代集合。
Remarks
如果指定了一个层级, Descendants 函数返回一个集合,包含指定成员或该集合成员的后代,且在指定层级下可选择性地修改 Desc_Flag 中指定的标志。
如果指定了 距离 , 后裔 函数返回一个集合,包含指定成员的后代或该集合中在该成员层级结构中指定层级数之外的成员,可选择性地通过 Desc_Flag中指定的标志进行修改。 通常,你用这个函数配合距离参数来处理参差不齐的层级结构。 如果指定的距离为零(0),函数返回的集合仅包含指定的成员或指定的集合。
如果指定了集合表达式,则会针对集合中的每个成员分别解析后 裔 函数,然后重新创建集合。 换句话说,后 裔 函数所用语法在功能上等价于MDX 生成 函数。
如果没有指定水平或距离,函数所用水平的默认值通过调用 水平 函数(<<成员>>)确定。对于指定成员(如果指定了成员),或者通过调用指定集合中每个成员的 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 | 返回所有从属于指定成员级别的后代成员,并包含指定的成员。 |
| 叶子 | 返回指定成员与指定层级之间或指定距离的叶子后代成员。 |
示例
以下示例返回指定的成员(美国),以及介于指定成员(美国)与指定等级前成员之间的成员(城市),示例返回指定的成员本身(美国),以及 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财年每个月天数中从Adventure Works立方体计算出的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 函数从祖 先 函数返回的集合中提取第一个(也是唯一一个)元组。
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]