【问题标题】:How to exclude a certain member from a MDX call that gets all descendants of a member at a higher level如何从获取更高级别成员的所有后代的 MDX 调用中排除某个成员
【发布时间】:2008-09-29 14:20:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: mdx


    【解决方案1】:

    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

    【讨论】:

      【解决方案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]}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-11
        相关资源
        最近更新 更多