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