2 votes

Obtenir le résultat le plus élevé d'un ensemble avec MDX

Je dois obtenir les noms des 50 meilleurs vendeurs par État à partir du cube

Voici ce que j'ai jusqu'à présent

SELECT NON EMPTY ( [DimGeo].[State].[State].ALLMEMBERS *
[Measures].[Total Sales]) ON COLUMNS,
NON EMPTY TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total  Sales]) ON ROWS
FROM Sales

Mais cela ne récupère que 50 résultats (même si un état n'en a pas 50). Je souhaite limiter les résultats par état aux 50 valeurs les plus élevées non vides.

Exemple : La table finale contiendra 2500 résultats (top 50 revendeurs par 50 états).

Y a-t-il un moyen d'atteindre cela ?

Merci,

4voto

Marc Polizzi Points 4061

Je suppose que vous recherchez la fonction Generate():

SELECT 
   NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS, 
   NON EMPTY Generate( [DimGeo].[State].[State].ALLMEMBERS as s,
             TOPCOUNT(s.currentMember * [DimEmployee].[Employee ID].[EmployeeID].MEMBERS, 50, [Measures].[Total  Sales] )) 
ON ROWS FROM fdmdw

0voto

Ben Gartner Points 317

Est-ce que cela fonctionne pour vous, en déplaçant l'État au niveau des lignes ?

SELECT NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS,
NON EMPTY ([DimGeo].[State].[State].ALLMEMBERS  * TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total  Sales])) ON ROWS
FROM fdmdw

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X