JSS2012 : Modélisation Dimensionnelle – Slides à télécharger

Si l’année dernière nous avions eu la chance d’avoir des webcasts enregistrés pour chaque session, malheureusement cette année nous n’avons pas eu le budget. Je n’ai donc que les slides à vous proposer, pour cette session Modélisation Dimensionnelle présentée avec mon compère Charles-Henri. Ah et une photo aussi 🙂

JSS2012 - Charly et Florian causent Modélisation Dimensionnelle

Rho ces speakers qui regardent l’écran…

 

J’en profite pour rappeler la littérature obligatoire dont on parle pendant la présentation :

Voilà pour le contenu de la présentation. Concernant le « public speaking », je vous avoue que c’est un exercice qui m’éclate de plus en plus. Si j’ai encore les chocottes les 5 premières minutes avant le début, ça ne dure guère et ça se transforme vite en plaisir.

Par contre, pour que ce soit vraiment le cas, cela demande quand même 2 choses :

  • D’abord parler d’un sujet qui me passionne. Je ne pourrais définitivement pas faire ça sur un sujet qui ne m’intéresse pas, ou avec des contraintes éditoriales qui m’empêcheraient de délivrer le message comme je le souhaite.
  • Ensuite de la préparation ! Il faut du temps pour murir les slides (au moins 3 versions successives complétement différentes), et surtout répéter, pour harmoniser son discours, travailler ses transitions et valider qu’il y a bien un fil rouge, qu’on raconte bien une histoire, plutôt qu’énumérer une suite de listes à puces.

Si ces deux conditions sont remplies, alors c’est vraiment fun !

Et vous avez l’habitude avec moi, là aussi j’ai un gourou dont je suis les enseignements, il s’agit de Scott Berkun (celui dont je tiens également la vision différente du rôle de chef de projet) et son livre c’est « Confession of a Public Speaker », une référence sur le sujet.

Enfin, n’hésitez pas à me faire vos retours sur la session dans les commentaires. Ce que vous avez aimé, ce qui vous a déplu, à quel moment je vous ai perdu, est-ce que j’ai réussi à vous rattraper… Ça m’intéresse beaucoup ! Et en question complémentaire : on parle de quoi l’année prochaine ? 😉

Journées SQL Server 2012 : Mon programme

Je suis le bon exemple de Philippe et vous confie à mon tour le petit programme que je me suis préparé pour la semaine prochaine (ça passe trop vite – mais vous pouvez toujours vous inscrire!).

Voyons ce que ça donne pour Lundi:

  • 09h00 : Plénière
  • 10h00 : Tour d’horizon SQL Server 2012
  • 11h45 : Private Cloud SQL Server. Si je recommande la session concurrente, la BI en 2013, sur le même créneau, perso je pense avoir une vue assez précise du sujet pour me permettre une incartade en dehors de la track verte.
  • 14h00 : SSAS 2012 Tabulaire, 1 an après. Je suis sûr qu’Aurélien et Erwan vont nous faire partager leur sagesse acquise dans les tranchées 😉
  • 15h45 : Modélisation Dimensionnelle avec Charly. En même temps je n’ai pas trop le choix !
  • 17h15 : Le grand dilemme. J’ai envie d’aller voir les 4 : Big Data (avec Romain qui a bien vendu sa session), Infrastructure BI (toujours bon à prendre pour un archi BI), MDS vu par Logica (voir si eux arrivent à me le vendre), et Processing SSAS 2012 (avec Patrice et David Tang). Mon cœur balance !

Et voici pour Mardi:

  • 09h00 : Plénière
  • 10h00 : EIM (SSIS, DQS, MDS) par Ismaël et Thomas.
  • 11h45 : BI et ALM avec JP. Dans l’ALM peuvent se cacher des gros morceaux d’Agilité. A ne pas rater pour moi donc 😉
  • 14h00 : DAX pour les fans de MDX. François et David sur une session 500 ? Va falloir s’accrocher à l’heure de la digestion !
  • 15h45 : Je vais peut-être abandonner Alexandre et sa session sur la DataViz et la BI Mobile pour continuer sur l’ALM côté SQL Server. Mon cœur balance encore entre le plaisir et la raison 🙂
  • 17h15 : Pour la dernière, j’irais évidemment écouter Olivier et Caroline nous parler Ergonomie & Storytelling pour la DataViz.

Et vous alors ? Vous avez votre programme ? Ça donne quoi ? 🙂

Modélisation dimensionnelle à éviter : La table de faits universelle

Comme vous le savez peut-être, cette année encore je co-animerai la session Modélisation Dimensionnelle aux Journées SQL Server 2012, les 10 et 11 décembre sur Paris, avec mon camarade Charles-Henri. Cette année on passe level 300 (ça commence à causer plus sérieusement) et franchement je pense qu’on va passer un bon moment 🙂

En attendant le jour J, je voulais vous parler d’une technique qui ne sera pas présentée lors de la session : celle de la table de faits universelle. Rencontrée chez un client dernièrement, c’est une modélisation qu’on peut aussi appeler la table de faits unique. Une table de faits pour les gouverner toutes. Une table de faits pour les trouver. Une table de faits pour les amener toutes et dans les ténèbres les lierHumJe divague

Je te vois faire n'importe quoi!

Je te vois faire n’importe quoi!

Si ça avait été fait par un stagiaire, ou un client qui s’essayait au décisionnel en dilettante, je trouverais ça mignon. Sincèrement. J’applaudirais pour l’effort et on prendrait une demi-journée ensemble pour causer modélisation. Mais là c’est réalisé par une équipe de consultants spécialisés dans le décisionnel.  Et c’est facturé. Moins mignon.

Alors voyons à quoi ça ressemble:

La table de faits universelle

Dans cette même table de faits, qui s’appelle juste « Fait » (c’est plus simple) on retrouve :

  • Les ventes quotidiennes
  • L’inventaire hebdomadaire
  • Les budgets trimestriels des magasins
  • Les objectifs trimestriels des commerciaux

C’est quand même bien fait ! On a tout sous les yeux d’un seul coup. Pas besoin de jointures, les requêtes SQL sont simplissimes. Alors que reprocher à cette modélisation ?

Déjà, je vous avoue qu’en 6 ans de missions en décisionnel, je n’ai jamais vu ça. J’en ai même parlé lors d’un afterworks du GUSS, auquel étaient présents des consultants d’à peu près tous les pure-players en décisionnel Microsoft, et personne n’en avait entendu parler non plus.

Mais vous me connaissez, je n’allais pas me limiter à ça. Regardons donc ce qu’en dit la littérature :

  • Wikipedia – Fact Table : “In data warehousing, a fact table consists of the measurements, metrics or facts of a business process.”  Une table de faits pour un processus métier donc, les ventes ou l’inventaire ou les budgets… mais un seul. J’avoue, en effet, ils auraient pu insister et mettre: “ a SINGLE business process”. Mais à mon avis personne ne se doutait qu’on verrait arriver la table de faits unique.
  • Wikipedia – Base de données relationnelle : « Dans une base de données relationnelle chaque enregistrement d’une table contient un groupe d’informations relatives à un sujet (…) ». Même commentaire, et là on parle de toute la technologie de la base de données relationnelle, plus seulement du décisionnel.
  • Ralph Kimball, l’inventeur du schéma en étoile, indique lui que chaque table de faits représente un processus métier, que chacune de ces tables est reliée à des dimensions, les mêmes dimensions pour tout le monde (alors dites conformées), et que toute la valeur de la modélisation en étoile vient justement de là. Parce qu’entre nous, quitte à faire une table de fait unique, autant pas s’embêter à faire des tables de dimensions hein… Et là le lien je le fais par vers un article spécifique, mais vers le bouquin de Kimball, parce qu’à un moment il va falloir le lire ce livre si vous vous dites consultant ou développeur décisionnel.
  • Bill Inmon, l’inventeur du schéma en flocon, indique la même chose. En effet les différences entre les deux modèles se situent au niveau de la structure des dimensions et du processus de génération du modèle, pas des tables de faits.
  • Et quid de Datavault ? La troisième modélisation très contestée du décisionnel ? Là c’est pire puisqu’on normalise complètement et qu’on conserve le format source original (une table pour les clients, une table pour les magasins, une table de relation entre les 2, etc, etc). Pas de table unique en vue.

Pas de chance, la littérature ne fait donc aucune mention de cette technique, et c’est même plutôt l’inverse qui est recommandé : créer une table de faits par processus métier. Soit dans notre cas, 4 tables : ventes, inventaires, budgets et objectifs.

Je précise au passage que dans ces sources, il ne faut pas interpréter la phrase « la table de faits est au centre du schéma en étoile » comme une indication qu’il n’y en ait qu’une seule. En effet un datawarehouse ce n’est pas un mais plusieurs schémas en étoile, plusieurs datamarts, autant qu’il y a de processus métier. Et en théorie l’ensemble de ces étoiles s’appelle une constellation, mais ça devient trop poétique donc on emploie rarement le terme.

D’une manière plus pratique, si on abandonne la littérature et qu’on s’interroge sur les mérites d’une telle modélisation, on peut se faire les réflexions suivantes :

  • Performances
    • A priori elles ne seront navrantes. En effet pour aller chercher un élément particulier de la table (les budgets), le moteur doit parcourir toutes les lignes de la table (les ventes, les inventaires…). C’est largement inefficace.
    • L’index le plus rapide de tous est l’index cluster (celui qui dicte comment les données sont écrites sur le disque). Comme vous le savez, on ne peut en définir qu’un seul par table (par définition). Tout mettre dans la même table c’est donc se priver d’un des meilleurs outils d’optimisation de la base de données. A la place d’en avoir un par processus métier, il n’y en aura qu’un seul, qui en plus ne sera pas très bon. Car évidemment, l’index s’optimise différemment en fonction du sujet. On indexe les ventes (par jour/magasin/produit) différemment qu’on indexe les objectifs (par trimestre/commerciaux). Et croisez les doigts pour que l’unicité des lignes des 4 processus métiers tiennent en moins de 16 colonnes.
    • Même remarque pour le partitionnement.
  • Confort d’utilisation / Qualité du requêtage
    • Si on s’économise les jointures en SQL, j’ai peur de ce à quoi vont ressembler les clauses WHERE. Et on n’a pas intérêt à se tromper sur ces filtres, sans quoi on va additionner des choux et des carottes (des quantités de ventes et des quantités d’inventaires). Le risque métier est important avec cette approche, il est inexistant avec la modélisation classique.
    • Et là où les jointures reviendront en force, c’est si on veut obtenir un état avec par exemple du budget et du facturé. Il faudra en effet faire une auto jointure (en FULL OUTER JOIN) de la table unique sur elle-même. Ce sera douloureux en écriture de requête et en performance.
    • Enfin, on l’a bien compris, impossible d’exposer ce modèle directement à un utilisateur. Il faudra définir un modèle de métadonnées devant chaque outil de reporting (Excel, Tableau, SSAS, SSRS…). Attention au coût de développement masqué.
  • Maintenabilité / Evolutivité
    • J’ai peur que l’ajout d’un nouveau processus métier (comme il est prévu dans le lot 2 j’imagine ?) ne se traduise par l’ajout de nouvelles colonnes dans cette table. Dans ce cas il faudra changer toutes les requêtes déjà développées (clauses WHERE, agrégations), toutes les métadonnées, et toutes les optimisations déjà réalisées. En somme il faudra tout refaire. A chaque évolution.
    • Enfin, si on s’enferme dans cette architecture, impossible de trouver un prestataire digne de ce nom qui assurera la TMA ou les évolutions sans d’abord tout refondre.

Bon et bien on le voit, si c’est une nouvelle théorie, c’est l’équivalent de remplacer les groupes sanguins par les signes du zodiaque pour déterminer la compatibilité dans les transfusions sanguines. De temps en temps ça va marcher, certes, mais sur le long terme…

Et sinon, comment modéliser ça de manière satisfaisante ?

En identifiant les dimensions utilisées pour chaque processus métier, leur grain, et en construisant les tables de fait en fonction (c’est dans le livre, ou dans le webcast) :

Oh la jolie étoile!

PS : Les périodes temporelles diverses (semaines, trimestres) sont gérées directement dans la dimension temps.

Là on dispose d’une constellation composée de 4 étoiles, qui utilise des dimensions conformées (partagées), qui répond aux problématiques de performance, de confort d’utilisation et de maintenabilité. Si on souhaite intégrer un nouveau processus métier, on ajoute une nouvelle table de faits, sans avoir à modifier l’existant. Chaque processus peut évoluer indépendamment des autres. Chaque amélioration d’une dimension profite à toutes les analyses.

De tout ça on en reparle lundi 10 décembre, aux Journées SQL Server 2012. Inscrivez-vous 😉

Journées SQL Server 2012 : Inscriptions ouvertes :)

Nous voilà repartis pour un tour, en effet il est temps d’annoncer l’ouverture des inscriptions aux JSS2012 🙂

Vous vous souvenez de cette conférence? Mais si, j’étais speaker l’année derrière (maintenant aussi sur Youtube!), et cette année j’y retourne en speaker et membre du staff. Autant vous dire qu’on fait une belle bande de canards à l’air très calme, mais qui pédalent furieusement sous la ligne de flottaison !

Alors vous vous demandez peut-être quelle conférence choisir, au moment où Microsoft annonce la prochaine édition des Techdays en février 2013? Très clairement, si vous pouvez assister aux deux, n’hésitez pas. Mais pour faire la distinction, aux JSS2012, organisées par le GUSS, vous allez apprendre. Aux Techdays, organisées par Microsoft, vous allez découvrir. Si je peux me permettre une boutade, envoyez vos managers aux Techdays, et venez vous-même aux Journées SQL Server !

N’hésitez donc pas à vous inscrire aux JSS2012, c’est gratuit, y’aura du beau monde, en « petit » comité (autour de 400 personnes prévues), avec du contenu de qualité! N’attendez pas 😉

Entourage

Un mot de sagesse qui nous vient de Seth Godin :

Notre entourage provoque des rencontres et nous inspire.

De ces rencontres et ces idées viennent le changement.

Ces changements nous transforment.

Maitrisez votre évolution en choisissant votre entourage.

Soit dit en passant :

  • Afterwork du GUSS en novembre, à priori le 15/11/2012, on en reparle
  • JSS2012 les 10 et 11 décembre 2012, les inscriptions seront bientôt ouvertes

PS: Et oui j’avoue sans honte que je suis un fan d’entourage. J’assume 🙂

Dans l’ordre: David, JP, Alex, Charly et Aurélien. Les Infinites finissent leur bouquin, je prends la photo, Pascale et les autres nous attendent au bistrot… Vous êtes les bienvenus 😉