mardi 16 avril 2013

Challenge MDX : Generate, TopCount et restriction sur un set... en 2005

Voici un cas marrant sur lequel nous nous sommes penchés avec Thomas Ricquebourg. Nous avons une dimension produit avec une hiérarchie standard (Marque - SousMarque - Produit), une dimension temps avec une hiérarchie (Année - Mois - Jour), une dimension Géographie (Pays) et enfin un groupe de mesures (Quantité et CA) avec des données au jour.
Le but du jeu c'est de ramener les 5 produits les plus vendus par pays pour un mois et une marque donnés. Première étape dans l'écriture de la requête :

WITH SET [Top Product] AS
GENERATE(
[Geography].[Country].Members
,TopCount(
[Product].[Product].Members
,5
,[Measures].[Quantity]
)
)

SELECT [Measures].[Quantity] ON 0,[Geography].[Country].Members
*[Product].[Brand].Member
*[Time].[Month].&[201304]
*[Top Product] ON 1

FROM [MyCube]


Cette dernière va poser un(des) problème(s) : Elle ne me retourne pas les produits les plus vendus sur le mois sélectionné ou encore, le nombre de produit par pays ne sera pas toujours le même et ce malgré le TopCount. A votre avis pourquoi? Comment résoudre ce cas (attention, nous sommes en 2005)?
Comme d'habitude, laisser vos avis dans les commentaires.
Encore une fois je le précise, tout le monde peut laisser libre cours à son imagination. Peu importe que les propositions soient plus ou moins bonnes, l'idée de ce genre de billet c'est de faire resurgir des notions générales à partir d'un cas précis.

samedi 6 avril 2013

Challenge SQL : Upgrade du DELETE


Etant donné que je suis en panne d'inspiration pour faire de billets intéressants et qu'en plus je n'en fais déjà pas souvent, je vais me lancer dans une petite suite de problématique que je vais vous adresser, à vous nombreux lecteurs de ce blog (nombreux relativement à mon cercle de connaissances professionnelles, autant dire que mis à part mes collègues, personne ne passe ici).