SQLSaturday à Paris – Session « Saisie de données pour la BI »

(Mise à jour 17/09/2013 : La session a eu lieu et les slides sont par là!)

Je vais suivre le bon exemple de Charly, et moi aussi faire un peu de pub pour ma session au prochain SQL Saturday, joyeusement co-animée avec Monsieur David Joubert !

SQLSAT251_web_thumb1

Alors voici pourquoi il faut venir nous voir, David et moi, pour la session « Saisie de données pour la BI » :

1 – Si on construit des systèmes décisionnels, c’est pour lutter contre l’obscurantisme et promouvoir la pensée rationnelle. Nos combats on les mène contre la simple ignorance mais aussi contre les biais cognitifs, ces petits bugs de la psychologie humaine qui nous font croire n’importe quoi, contre la mauvaise foi ou encore pour démasquer les conflits d’intérêts. Nous sommes les champions du bon sens et nous avons la donnée pour le prouver !

2 – On construit ces systèmes malgré les limites de nos outils, pour offrir les fonctionnalités à nos utilisateurs qui leur permettront de nous rejoindre dans cette juste mission. A nous de les équiper du meilleur pour gagner la lutte.

3 – Une des limites de nos outils, c’est qu’il est bien difficile de permettre à nos utilisateurs de saisir des données. Que ce soit pour saisir des objectifs afin de valider qu’une stratégie mise en place fonctionne bien, ou pour piloter le lancement d’un ETL d’un simple toucher du doigt, ou encore pour apporter des corrections sur un référentiel afin de rétablir la vérité, la fonctionnalité est requise mais pas aussi que ça évidente à mettre en œuvre. Lors de cette session nous verrons comment rendre tout cela possible.

Z’avez vu comment je l’ai joué « Start with Why » ? Pendant 2 minutes j’ai eu l’impression d’être dans Braveheart.

Braveheart fait de la BI

Alors afin quand même de vous éviter une fausse joie, si on parlera rapidement des scénarios MDM et BPM (particulièrement l’élaboration budgétaire), ce sera juste pour dire qu’ils sont hors sujets. Nous on se concentrera sur les petits scénarios aux bornes des grands cas d’usage, qui ne révolutionnent rien au niveau global mais qui changent tout pour l’utilisateur.

Et puis on a le dernier créneau de la journée, 16h-17h, donc le ton sera léger. Et vous nous connaissez, David et moi, vous savez qu’on n’est pas du genre à faire dans l’indigeste.

Alors on se voit le Samedi 14 Septembre ? Pensez juste à vous inscrire, c’est gratuit !

SQLSaturday à Paris – Samedi 14 Septembre!

Samedi 14 Septembre 2013 (Event Time Announcer) aura lieu à Paris le premier SQLSaturday en France.

SQLSAT251_web_thumb1

D’abord, c’est quoi un SQLSaturday ? C’est un événement organisé par le PASS, Professional Association for SQL Server, l’association officielle des utilisateurs de SQL Server. Je dis officielle car c’est celle qui est reconnue internationalement par Microsoft. Et le « local chapter » pour le PASS en France, vous vous en doutez bien, c’est le GUSS, le Groupe des Utilisateurs francophones de SQL Server.

GUSS Logo

Si le PASS global organise principalement le PASS Summit, habituellement les chapters organisent eux deux types d’événements : les SQLRally et les SQLSaturday :

  • PASS Summit : Plus grosse conférence SQL Server dans le monde, annuelle, traditionnellement à Seattle mais cette année à Charlotte, payante (+/- 1500€) avec les meilleurs speakers mondiaux
  • SQLRally : Conférences de quelques jours, plus locales, également payantes (+/- 500€) avec un contenu premium
  • SQLSaturday : Training d’une journée, communautaire, gratuite, occasion d’apprendre pour les participants comme pour les speakers. NB : ne se déroule pas forcément un samedi.

Et c’est là que vous comprenez pourquoi depuis 2 ans les Journées SQL Server, l’événement que nous organisons avec le GUSS en décembre, ne portent pas l’étiquette PASS : elles ne rentrent pas dans la structure marketing actuelle de l’organisation.

Or avec le renouvellement du board du GUSS cette année, a été décidé un rapprochement de notre association de la ligne éditoriale du PASS, et donc l’organisation d’un événement qui reprend le branding global : le SQLSaturday 251 à Paris.

Avec ce rapprochement arrivent certains avantages : la possibilité d’utiliser la plateforme technique du PASS pour la logistique d’organisation (y compris les propositions de sessions pour les speakers), et justement l’accès à des speakers internationaux inscrits sur les bonnes mailings listes.

Le planning le voici (à cliquer pour voir en grand):

Planning SQLSaturday 251

Et pour cette édition 251 nous aurons donc en guest stars:

  • Jen Stirrup, MVP SQL Server, Consultante aux UK (Blog | Twitter), référence internationale sur la BI et la DataViz sur la plateforme Microsoft. Elle est dans mes flux RSS depuis le début !
  • Hugo Kornelis, MVP SQL Server, Consultant aux Pays Bas (Blog | Twitter), qui va nous expliquer à fond le tout nouveau ColumnStore Index
  • Allan Mitchell, MVP SQL Server, Consultant aux UK (Twitter), spécialiste de l’intégration de données (SSIS, DQS, MDS) qui va nous causer Hadoop et plus précisément de Hive

Plus la crème des speakers français, Christophe Laporte, David Barbarin, la team rocket, etc, etc… 😉

On pourrait s’interroger sur le fait qu’on retrouve un peu toujours les mêmes copains dans la liste, avec justesse. Sur ce coup c’est pour 2 raisons principales :

  1. D’abord pour ne pas prendre de risque sur la première édition d’un événement,
  2. Ensuite, on n’a finalement pas reçu tant de propositions que ça lors de l’appel aux speakers. En fait pas mal de speakers étrangers, mais peu de francophones, et on a essayé de pas trop forcer sur la VO non sous-titrée

Mais sachez bien que si ça marche on pourrait faire ça plusieurs fois par an, et permettre à tous ceux qui le souhaitent de s’essayer en speaker.

Dans tous les cas moi je suis fan de la programmation, ça risque de pulser assez fort, donc n’hésitez pas à réserver votre samedi 😉

PS: Et je vais faire un article bientôt sur le contenu de notre session avec le père Joubert!

Afterwork Communauté SQL Server – Agilité décisionnelle

Le GUSS, Groupe des Utilisateurs SQL Server, organise un afterwork le 17 avril à 19h00 dans le 15ème à Paris.

Ce sera l’occasion de discuter de manière informelle sur les méthodes de gestions de projet et la philosophie agile, et l’outillage (ou absence d’outillage) qui va avec dans le monde SQL Server et Microsoft (tant côté ALM qu’outils de dév).

Ou juste boire une bière 😉

17 avril – 19h00
Charly-Birdy
1 place Etienne Pernet, Paris 15ème
Métro Commerce

Microsoft Techdays 2013 – 12, 13 et 14 février

Je vous préviens un peu tardivement, mais heureusement d’autres l’ont fait avant moi, que la semaine prochaine auront lieu les Techdays 2013.

Techdays 2013

J’y serai évidemment. Dans mon agenda cette année pas mal de sessions sur l’ALM (outillage Agile), le Big Data et le Cloud Azuré. Je ferai évidemment un tour sur le stand des communautés et sur celui de SQL Server. A la semaine prochaine! 🙂

Retour sur les JSS2012 – en tant que visiteur :)

Avant de vous faire un retour en mode speaker, avec comme promis les slides pour la Modélisation Dimensionnelle, je voulais faire un petit retour sur les sessions auxquelles j’avais assisté lors de cette édition 2012 des Journées SQL Server.

Parce que je ne sais pas comment vous vous l’avez vécu, mais moi j’ai constaté une vraie montée en puissance de certains speakers, tant en terme de contenu que de niveau de présence et de présentation. Ok, et en toute franchise, le niveau était loin d’être uniforme, et c’est un des sujets sur lequel on travaillera pour l’année prochaine. Mais pour moi, la présence des speakers suivant valait largement le déplacement (dans l’ordre chronologique des sessions) :

    Eric Grenon aux JSS2012

  • Eric Grenon sur le Private Cloud. Il connaît très bien son sujet et j’ai bien accroché avec ses idées. J’ai malheureusement du m’éclipser avant la fin pour des soucis d’organisation, mais définitivement une bonne découverte.

Aurélien Koppel aux JSS 2012

  • Aurélien Koppel sur SSAS Tabular. J’aime beaucoup son style un peu dandy, c’est bien préparé, ça déroule tout seul, on voit l’expérience !

Patrice Harel aux JSS2012

  • Patrice Harel, la révélation de ces JSS2012, pourtant sur un sujet assez aride : le Processing sur SSAS 2012. Comme pour son livre, on sent la maitrise et la passion pour les outils, bravo !

François Jehl et David Joubert aux JSS2012

  • Le duo François Jehl et David Joubert, sur la session DAX pour les fans de MDX. Là on avait le package complet : le fond et la forme, avec l’humour en prime. J’ai passé un excellent moment et vous l’aurez compris, c’est ma session préférée de cette édition.

Stéphane Guilleminot aux JSS2012

  • Enfin, Stéphane Guilleminot, qu’on a applaudit à la fin de son opération de chirurgie XML sur package SSIS 2012. Honnêtement je ne m’y serais pas risqué, mais lui il l’a réussie, en live.

Un gros bravo également aux speakers hors concours :

N’oublions pas ceux que je n’ai pas pu voir (3 à 4 tracks en parallèle, plus l’organisation, dur de tout suivre), je sais donc que j’en ai raté d’autres très bons 🙂

Et vous alors, qui ont été vos chouchous cette année ? Vous partagez mon avis sur le niveau qui s’améliore?

PS : Un gros bravo à la photographe, Annaelle Le Roy, car ces gens ne sont vraiment pas aussi beaux dans la vraie vie 😉

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 😉