#mdx
#Многомерные выражения
Вопрос:
мне интересно, как исключить определенные элементы из одного измерения, которые имеют ссылки с другими элементами из другого измерения… допустим, я хочу исключить клиентов (dim_clients), которые имеют статус A или статус B (dim_status). Я знаю, как скрестить два измерения, чтобы получить этих клиентов, но я не могу понять, как исключить их из моих вычислений, поскольку функция EXCEPT принимает два набора с одинаковой размерностью, но те, которые я хочу исключить, являются результатом операции перекрестного соединения, я не могу использовать функцию except
я хочу что-то вроде этого :
SELECT Measure.MyMeasure ON 0
FROM MyCUBE
WHERE
EXCEPT([DIM CLIENTS].[Clients], [EXCLUDED CLIENTS])
Спасибо
Ответ №1:
SELECT Measure.MyMeasure ON 0
FROM MyCUBE
WHERE
EXCEPT([DIM CLIENTS].[Clients], Filter({[DIM CLIENTS].[Clients]},[DIM_STATUS].CurrentMember IS [DIM_STATUS].statusA OR [DIM_STATUS].CurrentMember IS [DIM_STATUS].statusA))
Я не слишком уверен, что [Clients]
такое. Я бы все же использовал элементы.
Ответ №2:
Вы можете использовать функцию Extract(), чтобы получить набор исключенных клиентов с правильной размерностью:
where - Extract( { [EXCLUDED CLIENTS] }, [DIM CLIENTS].[Clients] )
Обратите внимание на унарный оператор для выполнения операции except.