在我使用的 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/en-us/library/ms144900.aspx
关于mdx - 如何从获取更高级别成员的所有后代的 MDX 调用中排除某个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/148875/