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?

Était-ce utile?

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]

Autres conseils

This information can be retrieved from the cube through AMO. The Cube class contains all the cube metadata you'll need.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top