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

StackOverflow https://stackoverflow.com/questions/148875

  •  02-07-2019
  •  | 
  •  

在我使用的OLAP数据库中,有一个“位置”层次结构,包含级别Company - >地区 - >面积 - >网站 - >房间。我正在使用以下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

其他提示

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

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]}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top