Comment puis-je déterminer si les dimensions sont liées?
Question
Je développe une application builder requête qui génère MDX et essayer d'obtenir le nombre de clients à partir d'un cube en utilisant ce qui suit, qui fonctionne très bien:
WITH MEMBER MEASURES.X AS (
{ [Customer].[Gender].[Female]},
[Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]
Cependant, si l'utilisateur fait glisser dans une dimension non liée au client comme:
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]
le résultat du comptage devient évidemment incorrect.
Y at-il un moyen de déterminer si une dimension est liée au client afin que je puisse l'exclure de la requête MDX générée?
La solution 2
Solved the problem by using the Exists( Set_Expression1 , Set_Expression2 [, MeasureGroupName] ) function. No need to manually determine which dimensions are related. The Exists function filters out the unrelated tuples, leaving only the
{ [Customer].[Customer].Children, [Customer].[Gender].[Female]}
set to do the count over.
Here is the 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]