Как я могу определить, связаны ли размеры?
Вопрос
Я разрабатываю приложение «Строитель запросов», которое генерирует MDX и пытаюсь получить количество клиентов из куба, используя следующее, что работает просто хорошо:
WITH MEMBER MEASURES.X AS (
{ [Customer].[Gender].[Female]},
[Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]
Однако, если пользователь перетаскивает измерение, которое не связано с клиентом, как:
WITH MEMBER MEASURES.X AS (
{ [Customer].[Gender].[Female]},
{ [Employee].[Status].[Active], [Employee].[Status].[Inactive]},
[Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]
Результат подсчета, очевидно, становится неверным.
Есть ли способ определить, связано ли измерение с клиентом, чтобы я мог исключить его из сгенерированного запроса MDX?
Решение 2
Решил проблему, используя Существует (set_expression1, set_expression2 [, seamgroupName]) функция Нет необходимости вручную определять, какие измерения связаны. А Существуют функционировать отфильтровывает не связанные кортежи, оставляя только{ [Customer].[Customer].Children, [Customer].[Gender].[Female]}
установить, чтобы сделать счет.
Вот MDX:
WITH MEMBER MEASURES.X AS Exists(
[Customer].[Customer].Children,
{[Customer].[Gender].[Female]}
*
{[Employee].[Status].[Active], [Employee].[Status].[Inactive]}
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]