返回指定集合中非第二个指定集合成员后代的成员。
Syntax
DrillupMember(Set_Expression1, Set_Expression2)
Arguments
Set_Expression1
一个有效的多维表达式(MDX)表达式,返回集合。
Set_Expression2
一个有效的多维表达式(MDX)表达式,返回集合。
Remarks
DrillupMember函数返回一组基于第一组中指定的成员,这些成员是第二组成员的后代。 第一个集合可以具有任意维度,但第二个集合必须包含一个一维集合。 第一组成员之间保持秩序。 该函数通过仅包含第一集合中与第二集合成员直接后代的成员来构造该集合。 如果第一集合成员的直系祖先不存在于第二集合中,则该集合中的成员将包含在该函数返回的集合中。 第一组中在第二组祖先成员之前的后代也包括在内。
第一个集合可以包含元组而非成员。 元组钻取是 OLE DB 的扩展,返回的是一组元组而非成员。
Important
只有当成员紧接着是子女或后代时,才会被训练。 集合中成员的顺序对Drilldown*和Drillup*函数族都很重要。 考虑使用 层次化 函数对第一个集合的成员进行适当排序。
Example
以下三个例子除了第二组外完全相同。 第一个例子中,第二个集合是美国(美国)。 因此,科罗拉多州被排除在结果之外。 它是美国(美国)的后裔。
SELECT DrillUpMember (
{ [Geography].[Geography].[Country].[Canada]
,[Geography].[Geography].[Country].[United States]
,[Geography].[Geography].[State-Province].[Colorado]
,[Geography].[Geography].[State-Province].[Alberta]
,[Geography].[Geography].[State-Province].[Brunswick]
}
, {[Geography].[Geography].[Country].[United States]}
) ON 0
FROM [Adventure Works]
例子二说明了成员顺序的重要性。 由于 DrillupMember 只针对第一组中紧接后代的成员进行训练,因此不会针对加拿大成员进行训练。 加拿大与其后代之间被美国和科罗拉多州分隔开来。 如果你重新排序成员,使加拿大正好位于阿尔伯塔上方,那么阿尔伯塔和布伦瑞克都会被排除在行集之外。
SELECT DrillUpMember (
{ [Geography].[Geography].[Country].[Canada]
,[Geography].[Geography].[Country].[United States]
,[Geography].[Geography].[State-Province].[Colorado]
,[Geography].[Geography].[State-Province].[Alberta]
,[Geography].[Geography].[State-Province].[Brunswick]
}
, {[Geography].[Geography].[Country].[Canada]}
)
ON 0
FROM [Adventure Works]
第三个例子展示了如何使用 Hierarchize 来减轻成员顺序的影响,并进一步深入对加拿大成员的训练。
SELECT DrillUpMember (
Hierarchize
(
{ [Geography].[Geography].[Country].[Canada]
,[Geography].[Geography].[Country].[United States]
,[Geography].[Geography].[State-Province].[Colorado]
,[Geography].[Geography].[State-Province].[Alberta]
,[Geography].[Geography].[State-Province].[Brunswick]
}
), {[Geography].[Geography].[Country].[Canada]}
)
ON 0
FROM [Adventure Works]