14

在我使用的 OLAP 数据库中,有一个“位置”层次结构,由公司 -> 区域 -> 区域 -> 站点 -> 房间级别组成。我正在使用以下 MDX 在公司级别获取特定成员的所有后代。

DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)

我现在需要从报告中排除一个名为“冗余”的特定区域。如何更改上述 MDX 以排除此特定区域(及其所有后代)?我知道这个区域将被称为“冗余”,但我不想硬编码任何其他区域名称,因为这些名称可能会改变。

4

2 回答 2

24

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

于 2008-09-29T14:26:12.807 回答
2

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

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]}
于 2014-10-09T13:22:34.750 回答