Измерения фильтрации для определенного элемента в многомерных выражениях

Мне нужно отфильтровать измерение [Line] только для определенного [Year].Member.

Например, [Время].[2004]. для отображения результатов ([Продукт].[Линия].[Классические автомобили] и [Продукт].[Линейка].[Корабли]) - исключить остальных членов [Продукт].[Линия] для [Время].[2004] но не исключайте элементы [Product].[Line] для других элементов [Time].Members.

Мне нужен код, совместимый с Мондрианом. Любое предложение?

SELECT
    NON EMPTY {[Measures].[Sales]} ON COLUMNS,
    NON EMPTY NonEmptyCrossJoin([Time].[Years].Members, [Product].[Line].Members) ON ROWS
FROM 
    [SteelWheelsSales]

введите здесь описание изображения


person Eliza M    schedule 09.03.2016    source источник


Ответы (1)


Что-то вроде этого должно работать:

SELECT 
  NON EMPTY 
    {[Measures].[Sales]} ON COLUMNS
 ,NON EMPTY 
    {
      (
        [Time].[2004]
       ,{
          [Product].[Line].[Classic Cars]
         ,[Product].[Line].[Ships]
        }
      )
     ,NonEmptyCrossJoin
      (
        Except
        (
          [Time].[Years].MEMBERS
         ,[Time].[2004]
        )
       ,[Product].[Line].MEMBERS
      )
    } ON ROWS
FROM [SteelWheelsSales];
person whytheq    schedule 09.03.2016