mdx pour les nuls développeurs michel perfetti - cellenza mvp visual studio alm
DESCRIPTION
MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM François JEHL - Criteo MVP SQL Server. Merci à nos sponsors. Nos sociétés. Cabinet de conseil exclusivement dédié aux technologies Microsoft et aux méthodes agiles . - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/1.jpg)
#JSS2013
Les journées
SQL Server 2013
Un événement organisé par GUSS
![Page 2: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/2.jpg)
#JSS2013
Les journées
SQL Server 2013
Un événement organisé par GUSS
MDX pour les nuls développeursMichel Perfetti - CellenzaMVP Visual Studio ALM
François JEHL - CriteoMVP SQL Server
![Page 3: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/3.jpg)
#JSS2013
Merci à nos sponsors
![Page 4: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/4.jpg)
#JSS2013
• Leader mondial du display à la performance avec 800 employés dans plus de 40 pays
• Une R&D de plusieurs centaines d’ingénieurs en plein Paris
• Qui innovent chaque jour pour traiter des centaines de milliers de requêtes par secondes et stocker des PB de données
• Le tout avec C#, Hadoop, SQL Server, Vertica, MongoDb…
• Envie de nous rejoindre?http://www.criteolabs.com/
• Cabinet de conseil exclusivement dédié aux technologies Microsoft et aux méthodes agiles .
• Cellenza accompagne ses clients dans l’adoption des meilleures pratiques, techniques et méthodologiques.
• Envie de nous rejoindre?
http://www.cellenza.com/
Nos sociétés
![Page 5: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/5.jpg)
#JSS2013
• Mythe n°1
Mythes et réalités sur le MDX
C’est compliqué !
Car comme chacun sait le SQL c’est
simple! Non c’est juste un peu différent.
* Nous avons décidé de nous représentermodestement sous la forme d’A. Einstein
![Page 6: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/6.jpg)
#JSS2013
• Mythe n°1
Mythes et réalités sur le MDX
Tu as bien appris le procédural, le
fonctionnel, l’objet, le relationnel, alors
pourquoi le multidim te ferait peur?
![Page 7: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/7.jpg)
#JSS2013
• Mythe n°2
Mythes et réalités sur le MDX
OK… Mais ça ne me sert à
rien!Ce langage est
pensé pour répondre à ses demandes, à
lui, là bas, ton client.
Salut! C’est moi qui te
paie !
![Page 8: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/8.jpg)
#JSS2013
• Mythe n°2
Mythes et réalités sur le MDX
Utiliser un formalisme qui parle le langage de ton client est plus productif que tordre le
SQL pour le même résultat
![Page 9: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/9.jpg)
#JSS2013
• Mythe n°3
Mythes et réalités sur le MDX
C’est difficile à intégrer!
Euh non. Ca s’interroge en .NET,
en Java et ça supporte de nombreux
scénarios de sécurité.
![Page 10: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/10.jpg)
#JSS2013
Agenda
• MDX vs SQL : le match– Rookie Level – Normal Level– Expert Level
• Pourquoi pas du MDX dans mon application?
![Page 11: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/11.jpg)
#JSS2013
MDX vs SQL - Rookie Level
• Un cube possède un méta-modèle– Qui explicite les clés de jointures– Qui spécifie quelles colonnes sont des mesures
(indicateurs numériques) ou des attributs (axes d’analyse)
– Qui gère traductions et conversion de devises
• L’écriture de requêtes est en réalité souvent bien plus facile et moins verbeuse
![Page 12: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/12.jpg)
#JSS2013
Démo - Rookie Level
J’aurais besoin des chiffres de ventes mensuels par catégorie de produit et
année. Pouvez vous me les donner en euros?
![Page 13: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/13.jpg)
#JSS2013
Démo - Rookie Level
• On en retient que :– L’écriture d’une requête est itérative– Les jointures sont implicites, de même que les
agrégats et les GROUP BY– La conversion de devises et la traduction est
native
![Page 14: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/14.jpg)
#JSS2013
MDX vs SQL - Rookie Level
• Les « colonnes » sont des membres, des coordonnées– On ne filtre pas sur une égalité / inégalité de
plusieurs colonnes– On définit le sous-cube qui répond à la requête
• On passe d’un requêtage algébrique à un requêtage géométrique
![Page 15: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/15.jpg)
#JSS2013
Démo - Rookie Level
Il me faudrait ces statistiques uniquement
pour cette année et pour les vélos, en France et au
Royaume Uni.
![Page 16: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/16.jpg)
#JSS2013
Démo - Rookie Level
• On en retient que :– Le filtrage des requêtes peut se faire dans la
clause WHERE (ou slicer)– On peut changer tout le contexte de la
requête pour un sous-cube de manière transparente
– Pour aller plus loin : bit.ly/IpTT3q
![Page 17: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/17.jpg)
#JSS2013
MDX vs SQL – Medium Level
• Un résultat tabulaire en SQL est conforme au stockage, c’est une table– Alors qu’un résultat tabulaire en MDX est une
projection en deux dimensions d’un espace à n dimensions
![Page 18: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/18.jpg)
#JSS2013
MDX vs SQL – Medium Level
• Une colonne calculée n’a donc pas de sens– On crée soit un membre calculé, soit une
mesure calculée, qui a bien sur une règle d’agrégation si nécessaire
![Page 19: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/19.jpg)
#JSS2013
MDX vs SQL - Medium Level
En 2006 j’ai quelques fournisseurs qui ont abusé des remises. Pourriez vous voir s’ils ont continué en 2007? Je voudrais voir
remises 2007 ventilées par le Top 10 2006, uniquement
pour les vélos.
![Page 20: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/20.jpg)
#JSS2013
MDX vs SQL - Medium Level
• On en retient que :– Les mesures calculées permettent de définir de
nouveaux indicateurs– Les membres calculés permettent de définir de
nouvelles valeurs de dimensions– Ces deux derniers peuvent être construits sur
un set mais il faut ensuite les agréger.– Les jeux nommés définissent des ensembles
de membres
![Page 21: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/21.jpg)
#JSS2013
MDX vs SQL – Medium Level
• Les hiérarchies sont natives au cube– Cela signifie que la notion de parent est
importante, un parent est l’agrégation de ses enfants
– Tout dépend ensuite de comment la mesure agrège.
– Similaire au GROUP BY ROLLUP de SQL mais en natif
• Il est facile de calculer des ratios, des contributions
![Page 22: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/22.jpg)
#JSS2013
MDX vs SQL - Medium Level
Je voudrais voir la contribution au total du CA
et au CA du parent de toutes les catégories et sous
catégories.
![Page 23: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/23.jpg)
#JSS2013
MDX vs SQL - Medium Level
• On en retient que :– Tout est hiérarchique dans un cube– On navigue dans les hiérarchies à l’aide de
fonctions généalogiques (Descendants, Ancestors…)
– On calcule très facilement des contributions si une hiérarchie a été prévue
![Page 24: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/24.jpg)
#JSS2013
MDX vs SQL – Expert Level
• Le temps est une notion importante– Une dimension temps est typée comme telle– Le langage comprend des opérateurs de
déplacement dans le temps
• Calculer des totaux glissants ou des cumuls à date avec du MDX est une partie de plaisir.
![Page 25: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/25.jpg)
#JSS2013
MDX vs SQL – Expert Level
J’ai une présentation avec le CFO! J’aurais besoin de
l’évolution du gross et gross YTD en YoY et MoM pour
l’année fiscale!
![Page 26: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/26.jpg)
#JSS2013
MDX vs SQL - Expert Level
• On en retient que :– La fonction ParallelPeriod permet de
récupérer une date par rapport à l’actuelle (~ DateAdd)
– La fonction PeriodsToDate permet de récupérer un ensemble de périodes
– Beaucoup d’autres fonctions natives existent pour faciliter la vie (Ytd, Mtd, Wtd)
![Page 27: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/27.jpg)
#JSS2013
MDX vs SQL pour le reporting : le bilan
![Page 28: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/28.jpg)
#JSS2013
Agenda
• MDX vs SQL : le match– Rookie Level – Normal Level– Expert Level
• Pourquoi pas du MDX dans mon application?
![Page 29: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/29.jpg)
#JSS2013
• C’est possible et c’est natif dans .Net• Depuis au moins SQL Server 2005
Pourquoi pas du MDX dans vos applications
![Page 30: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/30.jpg)
#JSS2013
demoADOMD.NET
![Page 31: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/31.jpg)
#JSS2013
• Un langage adapté au client c’est mieux– Surtout dans le domaine du reporting
• Les modèles sont complexes mais pas le langage
• Les cubes sont accessibles à tous
Conclusion
![Page 32: MDX pour les nuls développeurs Michel Perfetti - Cellenza MVP Visual Studio ALM](https://reader033.vdocuments.site/reader033/viewer/2022061514/568135cd550346895d9d31a6/html5/thumbnails/32.jpg)
#JSS2013#JSS2013