2010-12-14 43 views
0

J'ai un cube qui contient des données de ventes géographiques. Je veux tirer des ventes d'articles de tous les magasins, en me basant sur les 5 meilleurs vendeurs d'un magasin connu arbitraire (BTW c'est une version simplifiée du vrai problème).Dans MDX, comment puis-je filtrer une dimension/axe en fonction d'un TopCount?

Dans sql (honte sur moi) ce serait

select StoreId, ProductId, Sales from cube where ProductId in 
    (select top 5 ProductId from cube where Store = @Store order by Sales desc) 

Répondre

1

Vous pouvez utiliser la fonction Topcount pour cela. Pourvu que vous avez les dimensions du nom du produit et magasin et une mesure nommée [Ventes].

Select [Measures].[Sales] On Columns, 
     CrossJoin([Store].Members,Generate(Topcount(Crossjoin({[Store][email protected][<StoreId>]},[Product].Members),5,[Measures].[Sales]),[Product].CurrentMember)) On Rows 
    From [Yourcube] 

Replace <StoreID> avec le magasin spécifique que vous êtes intéressé par Générez fera une boucle à travers le top 5 trouvé pour le magasin spécifique et renvoie uniquement les membres du produit. Ce résultat est ensuite croisé avec tous les magasins.

+0

je suis arrivé jusque-là avec TopCount j'ai besoin, malheureusement, les ventes dans tous les magasins du top 5 en un seul, désolé si ma question était un peu clair . Je dois limiter la dimension du produit au top 5 des produits d'un seul magasin et rapporter pour tous les magasins. – MrTelly

+0

Je vois! J'ai modifié la requête pour inclure Store dans les lignes. – Rudolf

+0

J'ai essayé le MDX modifié et cela me renvoie le top 5 de chaque magasin plutôt que les ventes de chaque magasin basé sur le top 5 d'un seul magasin. Je cherche 5 lignes (6 si vous incluez ALL) à retourner – MrTelly

0

Cela va extraire les 5 meilleurs produits pour votre magasin dans l'axe ROWS, puis sélectionner [Ventes] de ces produits en fonction du membre par défaut de la dimension [Magasin]. Dans le cas où [Magasin] defaultMember est la racine d'une hiérarchie agrégable, cela devrait donner les ventes de chaque produit sur tous les magasins.

SELECT

[Measures]. [Ventes] ON 0,

TopCount ([Store]. [Votre-magasin] * [Produit] .Members), 5, [mesures]. [Vente ]) ON 1

dE [votre cube]