2009-04-24 5 views
1

J'ai créé une requête MDX qui calcule le TOP 10 ZipCodes (selon ma mesure Rester patient) en tant que tel:MDX - TopCount plus 'Autres' ou 'The Rest'

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10) 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

Cette requête est utilisée pour remplir un graphique à barres empilées PerformancePoint 100%. Le client a demandé que comme il s'agit d'un graphique basé sur! 00%, nous regroupons le reste des codes postaux dans un champ "Autre", de sorte qu'il devrait y avoir 11 valeurs: une pour chacun des 10 premiers, et un onzième est la somme des codes postaux restants. Je suis un novice extrême à MDX, mais cela ne semble pas être si difficile. Quelqu'un at-il des idées ou des suggestions?

Répondre

2

Je ferai de mon mieux avec le code non testé, donc voilà:

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SET [Top10ZipCodes] AS 
    (TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10)) 

MEMBER [Patient].[ByZipCode].[OtherZipCodes] AS 
    (AGGREGATE({EXCEPT([Patient].[ByZipCode].Members, [Patient].[ByZipCode].[Top10ZipCodes])})) 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

{[Top10ZipCodes], [Patient].[ByZipCode].[OtherZipCodes]} 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

Qu'est-ce que cela ne crée est un ensemble de votre top 10 codes postaux, puis agrégats (autre que la somme !!!) Tous les codes postaux, à l'exception de votre top 10.

En outre, s'il s'agit d'un ensemble commun (10 premiers codes postaux), vous pouvez créer un ensemble sur le cube, où vous pouvez le réutiliser ad nauseum , sans avoir à changer toutes les requêtes MDX que vous avez.

Cheers,
Eric

+0

Il y avait une erreur de syntaxe avec la création du SET [patient]. [ByZipCode]. [Top10ZipCodes]. Je devais juste supprimer les références de dimension (renommer le SET pour juste [Top10ZipCodes]) et cela a fonctionné à 100% pour moi. Merci beaucoup, j'ai même l'impression d'avoir appris quelque chose, ce qui est encore mieux qu'une simple réponse à la question. – Colin

+0

Ah, oui. J'étais dans un état d'esprit MEMBRE, je suppose. En tout cas, heureux je pourrais aider! – Eric

Questions connexes