MDX исключить из уровня иерархии - PullRequest
0 голосов
/ 01 июня 2018

У меня иерархия географии, созданная следующим образом:

  • уровень 1: континент
  • уровень 2: область
  • уровень 3: город

Мне нужно извлечь данные обо всех разных континентах, но я должен исключить конкретный город из одного континента.Я не могу использовать ни предложение WHERE, ни вложенный FROM для его фильтрации.Я перепробовал много решений, таких как EXCEPT, FILTER и «-», но ни одна из них не сработала.

Вот пример одной из моих неправильных попыток, которая извлекает данные, но не исключает город, который мне не нужен:

Except( 
       [Zone].[GeographyHierarchy].[Continent].ALLMEMBERS,
    { 
            Descendants( 
                 [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant]
              , [Zone].[GeographyHierarchy].[Continent], SELF_AND_BEFORE ) } 
    )

Кто-нибудь может помочь найти рабочее решение?Спасибо всем.

РЕДАКТИРОВАТЬ :

Я думаю, что нет никакого решения, работая на самом высоком уровне иерархии, поэтому я начал фильтровать на самом низком уровне (Город):

Except( [Zone].[GeographyHierarchy].[City].ALLMEMBERS,
        { [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant] } )

Таким образом, у меня есть все отдельные города, которые я хочу, но теперь я должен собрать их на континенте более высокого уровня.

Есть идеи о том, как это сделать?

1 Ответ

0 голосов
/ 08 июня 2018

Если вы не хотите использовать предложение WHERE, вам нужно создать новый вычисляемый элемент для континента с исключением

WITH 
MEMBER [Zone].[GeographyHierarchy].[ALL].[ContinentIWant_exclX] AS
    [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant]
    - [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant]  
SET [Continents] AS
     EXCEPT(
       [Zone].[GeographyHierarchy].[Continent].MEMBERS,
       [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant]
     )
    +
     [Zone].[GeographyHierarchy].[ALL].[ContinentIWant_exclX]
...

Не идеально, но без возможности использования WHEREпункт вещи становятся хитрыми

...