如何从MDX调用中排除某个成员,该调用获取更高级别成员的所有后代



在我使用的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

当为层次结构返回成员时,只需使用"-"来排除您不想要的成员。这就是我排除未知成员的方法:

select
{[Module].[Hierarchy].[Module].Members - [Module].[Hierarchy].[Module].[Unknown]} on rows,
{[Date].[Month-day].[Day Of Month].Members - [Date].[Month-day].[Day Of Month].[Unknown]} on     columns
from [StatsView]
where {[Measures].[Maintainability Index]}

最新更新