многомерные выражения. Фильтровать значения из таблицы фактов перед агрегированием

#mdx #mondrian

#многомерные выражения #мондриан

Вопрос:

У меня есть простой куб с 2 измерениями: Dim1, Dim2 и одним значением измерения (агрегатор = сумма) Мне нужно получить перекрестную таблицу через многомерные выражения:

 select non empty [Dim2].members on 0, non empty [Measures].value on 1 
from [cube]
  

=>

       el1 el2 el3 el4

value 12  14  45  64 
  

эти значения агрегируются с помощью dim1. ok.

Затем я создаю вычислительную меру:

 with [Measures].value_filter as iif([Measures].value> 15, [Measures].value, null)
select non empty [Dim2].members on 0,
non empty [Measures].value_filter on 1
from [cube]
  

=>
мы получаем правильный результат:

      el3 el4 
value 45 64
  

Но как я могу фильтровать ячейки по неагрегированным значениям [Measures].value, т. Е. Реальным значениям из базы данных?

Ответ №1:

Вы можете фильтровать только по элементам, которые содержатся в измерении. Если вы хотите отфильтровать что-либо, это должно быть доступно в кубе. следовательно, вам потенциально может потребоваться добавить некоторые столбцы в качестве атрибутов к одному из ваших измерений.

Вы должны выполнить фильтрацию следующим образом, предполагая, что вы хотите использовать Член1 иерархии / атрибут Hier2 измерения Dim2 в качестве фильтра:

 select non empty [Dim2].members on 0,
       [Measures].value on 1 
  from [cube]
 where ([Dim2].[Hier2].[Member1])