Modélisation Dimensionnelle : Les Fondements du Datawarehouse (webcast)

Comme promis précédemment, voici le webcast de la session que j’ai co-animé aux Journées SQL Server 2011: Modélisation Dimensionnelle – Le fondement du Datawarehouse. Pour info je suis le mec qui monopolise la parole pendant les premiers 3/4 d’heure (désolé Jean-Pierre!)

Le webcast est disponible juste là:

Webcast Journées SQL Server 2011 : Modélisation DimensionnelleModélisation Dimensionnelle – Webcast JSS 2011

Les slides sont disponibles en PDF et en PPTX. Pour la liste de tous les webcasts, c’est sur le site du GUSS.

Je vous mets ici les références citées de la session, par ordre chronologique:

Les liens vers les organisateurs:

  • Le GUSS : inscrivez vous, c’est gratuit!
  • Microsoft : les meilleurs produits bases de données et décisionnel du monde, oui madame! Vous y trouverez SQL Server 2012 en version RC0 (Release Candidate) en téléchargement libre 😉

Je rajoute la littérature obligatoire pour tout consultant décisionnel qui se respecte 😉

Si vous avez des remarques, des conseils, des corrections à faire, ou des questions à poser c’est le moment et l’endroit (PS : pour les clefs étrangères, c’est ici que ça se passe) 😉

Pour ou contre les clefs étrangères dans le datawarehouse?

Mise à jour 19/12/2012 – Un épilogue intéressant par Fred Brossard!

Durant notre session sur la Modélisation Dimensionnelle, avec Jean-Pierre nous n’avons pas pu nous empêcher de provoquer la foule (en délire :)) en lâchant l’air de rien un « …de toutes façons les foreign keys, en décisionnel, on ne les implémente pas... ». C’était évidemment une petite provocation, qui a bien fonctionné, mais il est temps de faire place aux arguments!

Le pour:

  • Implémentation au niveau du moteur SQL de la contrainte d’existence de la clef étrangère

Le contre:

  • Perte de performance à l’insertion (visible à partir de volumétries « importantes », naturellement dû à la vérification effective de la contrainte)
  • Perte de la commande TRUNCATE sur les tables concernées
  • Implémentation au niveau du moteur SQL de la contrainte d’existence de la clef étrangère

Hum… Il me semble voir un élément en double dans ma liste…

Pourquoi mettre la contrainte d’existence dans les contres? Parce qu’en mode projet, lors de la fabrication du datawarehouse, vous allez vider et remplir des centaines de fois vos tables de faits et vos tables de dimension. Et même très souvent, vous allez recharger vos dimensions sans vous soucier de vos faits. Implémenter à ce moment là vos clefs étrangères, c’est vous obliger à vider dans l’ordre les bonnes tables, sans utiliser un TRUNCATE, ou alors supprimer et recréer vos clefs à chaque fois… Encore du boulot alors qu’on en a déjà assez. C’est pourquoi à mon sens pendant le projet, les clefs étrangères ne sont qu’un frein à l’itération rapide sur le design.

La question devient alors: comment garantir la contrainte d’existence d’un membre de dimension pour un ID présent en table de fait? Pour moi cela doit être fait par design, au niveau de l’ETL:

  1. On dispose initialement d’un « Membre Inconnu« , sur une ID technique comme le -1, dans les dimensions
  2. On alimente ses dimensions à partir des fichiers sources, afin de capturer à la volée les nouveaux membres qui peuvent arriver
  3. Lors du chargement des tables de faits à partir de ces mêmes fichiers, on effectue un LOOKUP sur la table de dimension pour aller chercher l’ID du membre correspondant
    • Soit le membre existe : pas de problème
    • Soit le membre est inconnu : on indique en dur l’ID technique (-1), et on vérifie que la valeur a bien été rejeté lors du chargement de la dimension (sinon c’est qu’on a un vrai problème: pourquoi le membre n’apparaît pas dans la dimension?)

Avec ce petit algorithme, on ne peut pas insérer un NULL dans la table de faits. D’ailleurs, rien ne vous empêche de rendre les colonnes de clefs de dimension NOT NULL dans vos tables de faits. Évidemment, avec cette technique, les DELETE sont interdits dans la table de dimension, sinon rien ne vous protège d’avoir un ID en table de faits qui ne remonte pas sur la table de dimension.

Maintenant que j’ai dit tout ça, ne croyez pas que je sois anti clefs étrangères, bien au contraire. Si vous êtes dans un datawarehouse qui doit effectuer des DELETE sur ses dimensions (chargements exotiques, purge de la profondeur d’historique…), il est plus que conseillé d’utiliser les foreign keys. Et d’une manière plus générale si vous n’avez pas confiance dans votre ETL, appelez les consultants… euh non pardon, utilisez les foreign keys (et appeler aussi les consultants! :)).

Dans tous les cas, le débat est ouvert dans les commentaires, n’hésitez pas à donner votre avis et vos arguments sur le sujet, je suis à l’écoute!

PS : Il faut rendre à César ce qui appartient à César, et celui qui a fait mon éducation sur ce sujet c’est évidemment David Joubert, expert technique de génie 🙂

Modélisation dimensionnelle : La révolution vient d’Italie!

Marco Russo (Blog | Twitter) retrouve son compère Alberto Ferrari (Blog | Twitter) pour mettre à jour son célèbre PDF gratuit The Many to Many Revolution.

Ça parle many to many, évidemment, en UDM (SSAS Classique) et en Tabular (BISM mode PowerPivot) autour d’une dizaine de cas fonctionnels classiques. C’est top!

C’est un document à lire / conserver sous le coude pour tous les consultants décisionnels qui s’orientent vers de l’architecture applicative, c’est à dire le bon design des modèles dimensionnels pour répondre correctement et efficacement au besoin métier.

Comme d’habitude avec les PDF et livres des compères, c’est super bien écrit, très clair et avec plein d’exemples. Je recommande vivement 🙂

Update 10/11/11 : Annonce officielle de la mise à jour par Marco Russo.

Journées SQL Server à Paris : inscriptions ouvertes!

Journées SQL Server

Les inscriptions viennent d’ouvrir pour les Journées SQL Server, l’événement gratuit organisé par le GUSS dont je vous avais parlé plus tôt.

Elles se dérouleront les 12 et 13 décembre (lundi et mardi), à Issy-les-Moulineaux chez Microsoft. Trois parcours sont ouverts: décisionnel, développement SQL et appliance/volumétrie (en attendant un meilleur nom?).

Si vous faîtes partie des lecteurs orientés BI, je vous encourage vivement à participer. Par contre pour ceux qui ne bossent pas dans l’informatique, cela risque d’être un peu trop technique comme première expérience.

De mon côté je vais me faire le parcours suivant:

Les inscriptions c’est par là. Comme vous pouvez le constater: y’aura du beau monde (plein de beau monde) donc viendez nombreux 🙂

Les Journées SQL Server à Paris!

Juste un petit mot pour vous dire que j’animerai surement une session au SQL Rally Journées SQL Server, un événement organisé par le GUSS (section francophone du PASS), les 12 et 13 décembre 2011 sur le campus de Microsoft à Issy les Moulineaux.

Le thème de la session sera la modélisation dimensionnelle (Kimball, Inmon et autres).

Je vous en dirai plus quand j’en saurai plus 🙂

PS: Finalement le nom de l’événement ne sera pas SQL Rally mais Journées SQL Server!