MDX - TopCount plus 'Autres' ou 'The Rest'
-
16-09-2019 - |
Question
J'ai créé une requête MDX qui calcule les 10 TOP ZipCodes (selon ma mesure Rester patient) en tant que tel:
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 alimenter un PerformancePoint 100% graphique à barres empilées. Le client a demandé que nous mettons dans le reste des codes postaux dans un champ « Autre », tels qu'il devrait y avoir 11 valeurs car cela est un 00% sur la base graphique,: un pour chacun des 10 premiers, et un onzième qui est une somme du reste des codes postaux.
Je suis un novice extrême à MDX, mais cela ne souund pas comme il devrait être impossible. Est-ce que quelqu'un a des idées ou des suggestions?
La solution
Je ferai de mon mieux avec le code non testé, il faut en tenir:
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 se crée un ensemble de votre top 10 codes postaux, puis agrège (autre que la somme !!!) tous les codes postaux, à l'exception de votre top 10.
En outre, si cela est un ensemble commun (top 10 codes postaux), vous voudrez peut-être faire un ensemble sur le cube, où vous pouvez réutiliser ad nauseam, sans avoir à changer toutes les requêtes MDX que vous avez.
Cheers,
Eric