Sql server MDX:如何在此查询中排除返回的祖先?

Sql server MDX:如何在此查询中排除返回的祖先?,sql-server,service,mdx,analysis,Sql Server,Service,Mdx,Analysis,我有一个MDX查询: Exists([Group].[Group Hierarchy].allmembers, {[Group].[Group Full Name].&[121 - Group A], [Group].[Group Full Name].&[700000 - Group C]}) 。。。除了返回指定组的所有祖先之外,它工作正常。我想要的是只返回层次结构中具有指定组名的组(这是一个类型2维度,因此可能有许多不同级别的组) 有什么想法吗 筛选器([Group

我有一个MDX查询:

Exists([Group].[Group Hierarchy].allmembers,
    {[Group].[Group Full Name].&[121 - Group A], [Group].[Group Full Name].&[700000 - Group C]})
。。。除了返回指定组的所有祖先之外,它工作正常。我想要的是只返回层次结构中具有指定组名的组(这是一个类型2维度,因此可能有许多不同级别的组)


有什么想法吗

筛选器([Group].[Group Hierarchy].members,instr(@GroupGroupFullName,[Group].[Group Hierarchy].Properties(“Group Full Name”))

我怀疑问题与[Group].[Group Hierarchy].allmembers的引用有关。我猜[Group Hierarchy]是一种具有多个级别的导航层次结构。听起来您需要做的是将[Group Hierarchy]替换为包含类型2组成员的属性的名称,以便获得具有指定“Group Full name”成员的所有成员的列表

我将把Filter(…,Instr())方法作为最后手段,因为它比等效的基于集合的操作慢得多。

替换

[Group].[Group Hierarchy].allmembers 


谢谢你的评论,达伦。[组层次结构]是SCD类型2维度的父子层次结构。。。这意味着随着时间的推移,同一个组在层次结构中的不同级别。因此,在这种安排中,我唯一能想到的一致识别给定组的方法是通过其名称(该名称不受类型2更改的影响,并且对于给定组是唯一的)。我必须在我的查询中使用层次结构,以便所有计数和不正确相加的内容。父子层次结构会使事情变得有些复杂,因为它会带来所有祖先成员。在这种情况下,使用Filter()实际上可能是最简单的解决方案。
[Group].[Group Hierarchy].[Group Hierarchy]