Во-первых, спасибо всем за ответы. Это было интересно решить, и для любого новичка в MDX, пришедшего из SQL, легко попасть в ловушку.
Так что для интересующихся здесь краткий обзор решения.
У меня есть 3 таблицы
factDemographics: содержит респондентов и их ответы (кто на что ответил)
dimAnswer: ответы
dimRespondent: респонденты
В представлении источника данных для куба я 5 раз дублировал factDemographics, используя именованные запросы, и назвал их fact1, fact2, ..., fact5. (который создаст 5 групп мер)
Используя мастер создания куба VS Studio, я установил следующие таблицы фактов
- fact1, fact2, ... как таблицы фактов
- dimRespondent таблица фактов. Я использую эту таблицу, чтобы узнать количество респондентов.
- Удален исходный фактографический стол.
После создания куба я дублировал измерение dimAnswer 5 раз, назвав их filter1, filter2, ...
Наконец, на вкладке Использование измерения структуры куба я связал их вместе следующим образом
filter1 много ко многим dimRespondent
filter2 много ко многим dimRespondent
filter3 много ко многим dimRespondent
filter4 много ко многим dimRespondent
фильтр5 много ко многим dimRespondent
фильтр1 факт регулярных отношений1
фильтр2 факт регулярных отношений2
фильтр3 факт регулярных отношений3
фильтр4 факт регулярных отношений4
filter5 факт регулярных отношений5
Теперь я могу переписать запрос, использованный в исходном сообщении, как
SELECT
[Measures].[Dim Respondent Count] On 0
FROM
[DemographicsCube]
WHERE
(
[Filter1].[Answer].&[Male],
[Filter2].[Answer].&[20-25]
)
Мой запрос теперь может быть отфильтрован до 5 вопросов.
Хотя это работает, я уверен, что есть более элегантное решение. Если кто-нибудь знает, что это такое, я бы с удовольствием это услышал.
Спасибо