¿Cómo puedo determinar si las dimensiones están relacionadas?
Pregunta
Estoy desarrollando una aplicación de constructor de consultas que genera MDX e intente obtener los recuentos de clientes de un cubo usando lo siguiente, lo que funciona bien:
WITH MEMBER MEASURES.X AS (
{ [Customer].[Gender].[Female]},
[Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]
Sin embargo, si el usuario se arrastra en una dimensión que no está relacionada con el cliente como:
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]
El resultado del recuento obviamente se vuelve incorrecto.
¿Hay alguna forma de determinar si una dimensión está relacionada con el cliente para que pueda excluirla de la consulta MDX generada?
Solución 2
Resolvió el problema usando el Existes (set_expression1, set_expression2 [, mideGroupName]) función. No es necesario determinar manualmente qué dimensiones están relacionadas. los Existe la función filtra las tuplas no relacionadas, dejando solo el{ [Customer].[Customer].Children, [Customer].[Gender].[Female]}
establecido para hacer el conteo.
Aquí está el 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]