在我使用的OLAP数据库中,有一个"位置"层次结构,包括级别公司 - >区域 - >区域 - >站点 - >房间.我使用以下MDX来获取公司级别的特定成员的所有后代.
DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)
我现在要求从报告中排除名为"Redundant"的特定区域.如何更改上述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/en-us/library/ms144900.aspx