Мне нужно определить вычисляемый элемент в MDX (это SAS OLAP, но я в любом случае буду признателен за ответы от людей, которые работают с различными реализациями OLAP).
Значение нового показателя следует рассчитывать на основе существующего показателя с применением дополнительного условия фильтра. Полагаю, будет понятнее с примером:
- Существующая мера: «Общий трафик»
- Существующее измерение: «Направление» («Вход» или «Выход»)
- Мне нужно создать вычисляемый элемент "Входящий трафик", который равен "Общий трафик" с дополнительным фильтром (Direction = "In")
Проблема в том, что я не знаю MDX и у меня очень плотный график (извините за вопрос новичка). Лучшее, что я мог придумать, это:
([Measures].[Total traffic], [Direction].[(All)].[In])
Что почти работает, за исключением ячеек с определенным направлением:
Так что похоже, что «встроенный» фильтр в Direction переопределен моим собственным фильтром). Мне нужно пересечение «внутреннего» фильтра и моего собственного. У меня было ощущение, что это связано с пересечением [Direction].[(All)].[In]
с внутренними координатами оцениваемой ячейки, но трудно понять, что мне нужно, не прочитав сначала тему:)
[править] Я закончил с
IIF([Direction].currentMember = [Direction].[(All)].[Out],
0,
([Measures].[Total traffic], [Direction].[(All)].[In])
)
.. но, по крайней мере, в SAS OLAP это приводит к выполнению дополнительных запросов (для вычисления значения для [in]) к базовому набору данных, поэтому я не использовал его в конце.