如何从MDX调用中排除某个成员,从而使该成员的所有后代都处于较高级别
时间:2020-03-06 14:52:35 来源:igfitidea点击:
在我使用的OLAP数据库中,存在一个"位置"层次结构,该层次结构由公司->区域->区域->站点->房间级别组成。我正在使用以下MDX在公司级别获取特定成员的所有后代。
DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)
现在,我需要从报告中排除名为"冗余"的特定区域。如何更改上面的MDX以排除此特定区域(及其所有后代)?我知道该地区将被称为"冗余",但我不想对其他任何地区名称进行硬编码,因为这些名称可能会更改。
解决方案
EXCEPT函数将取一个集合,并删除我们不需要的成员。在情况下,我们需要说:
EXCEPT( {DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)}, {DESCENDANTS([Location].[Whatever].[Redundant],[Location].[Site], SELF_AND_BEFORE)} )
除了第二组中提到的内容,这为我们提供了第一组中的所有内容。这样更容易理解:
EXCEPT({the set i want}, {a set of members i dont want})
我们不必担心第三个(可选)参数:http://msdn.microsoft.com/zh-cn/library/ms144900.aspx