Как я могу определить, связаны ли размеры? - PullRequest
0 голосов
/ 14 июня 2011

Я занимаюсь разработкой приложения для построения запросов, которое генерирует 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]

результат подсчета явно становится неверным.

Есть ли способ определить, связано ли измерение с клиентом, чтобы я мог исключить его из сгенерированного запроса многомерных выражений?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Решил проблему с помощью функции Exists (Set_Expression1, Set_Expression2 [, MeasureGroupName]) .Нет необходимости вручную определять, какие размеры связаны между собой.Функция Exists отфильтровывает несвязанные кортежи, оставляя только значение { [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]
1 голос
/ 15 июня 2011

Эту информацию можно получить из куба через AMO . Класс Cube содержит все необходимые метаданные куба.

...