Stephen Few sur Tableau 8 (spoiler : il est pas ravi)

Stephen Few, le pape de la datavisualization, nous fait un retour assez sombre sur la nouvelle édition de Tableau (qui devrait sortir sous peu). Vous le savez c’est un sujet qui me tient à cœur puisque je dispose d’une offre Tableau dans mon portefeuille.

Si je n’ai pas eu la chance de tester Tableau 8 moi-même, pour constater de visu les remarques faites par Stephen, je retrouve bien mon feeling général par rapport à l’éditeur dans sa prose. Je vous laisse aller la parcourir!

The new face of Tableau

Alors la situation est-elle critique? Le monde de Tableau s’écroule t-il?

Ou formulé de manière plus pragmatique : Peut-on encore sereinement acheter du Tableau aujourd’hui ?

Oui, évidemment! (répond le revendeur de licences).

Tableau Desktop 7, et bientôt Tableau 8, est pour moi l’un des meilleurs logiciels d’exploration visuelle des données. Il dispose d’une avance considérable qu’il faudra du temps aux autres pour rattraper. Aujourd’hui c’est le plus rapide à prendre en main, le plus flatteur pour l’utilisateur, le plus simple à déployer et maintenir, et à part les copains Spotfire (au licencing incompréhensible) et JMP (nettement moins sexy) il n’y a pas grand monde pour le concurrencer.

Par contre si Tableau, l’éditeur, en faisant des efforts pour plaire à Gartner et au marché (à la veille de son entrée en bourse), va à l’encontre des bonnes pratiques de la dataviz (qui étaient son facteur différenciant jusqu’à présent), il est vitale que les vrais experts indépendants comme Stephen Few tirent la sonnette d’alarme. C’est chose faite!

Espérons que le message passe.

Dilbert du 30/07/2012

24h of PASS: Andrew Brust – Big Data sur la plateforme Microsoft SQL Server

Un peu de contexte: j’ai assisté à quelques sessions du dernier 24h of PASS, 12 sessions d’1h en webcast, de très grande qualité, organisées par le PASS, suivi de 12h de rediffusion. Les enregistrements sont déjà disponibles en streaming. Je vous livre ici un petit compte rendu de ce que j’ai appris.

Sessions: Big Data on the Microsoft Platform (Vidéo)

Speaker: Andrew J. Brust – CEO / Consultant / Blogger (LinkedinBlogTwitter)

A retenir:

  • Big Data c’est, entre autres :
    • Du volume, quand ça commence à coincer sur nos plateformes habituelles (100+TB)
    • Du temps réel, quand on est obligé de streamer les données (finance de marché, capteurs industriels, média social, des interactions plutôt que des transactions…)
    • Des données non structurées ou semi structurées, pour lesquelles nos outils doivent être trop adaptés pour que ce soit rentable / il faille utiliser de nouveaux outils
  • Hadoop c’est : un framework java, version open source du système de gestion des gros volumes de données de Google. C’est un outil Big Data parmi d’autres. Deux composants principaux :
    • HDFS : qui permet de stocker les données de façon distribuée, sur un cluster (un assemblage de serveurs composés de hardware standard).
    • MapReduce : qui permet de manipuler ces données
  • MapReduce c’est : du code Java qui réalise les opérations de manipulation des données hébergées sur HDFS :
    • Langage : à la base du Java, on peut désormais « streamer » du C# (cf HDInsight plus bas), ou plus simplement passer par du JavaScript (par exemple sur Azure)
    • Opérations : un schéma vaut une longue explication

    MapReduce pour les nuls

  • Une implémentation de Hadoop c’est :
    • Du HDFS sur un cluster pour stocker les données. On peut les manipuler directement, manuellement, avec des batchs MapReduce.
    • HBase : (optionnel) une base NoSQL dont les tables sont des fichiers HDFS.
    • Hive : une surcouche SQL (hiveQL) pour requêter sur les données (à travers HBase ou pas), qui génère du MapReduce. Il existe un connecteur ODBC vers Hive, pour le moment en beta dans HDInsight.
    • Pig : une surcouche de transformation de données dans un langage spécifique (Pig Latin), qui génère du MapReduce.
    • Mahout : une surcouche de datamining et machine learning, qui génère du MapReduce.
    • Flume : une surcouche pour intégrer des log files, qui génère du MapReduce.
    • Sqoop : une surcouche pour intégrer des données depuis des bases, qui génère du MapReduce.
  • HDInsight c’est : Hadoop sur Windows dans le cloud (Azure) ou en local avec :
    • le stockage distribué des fichiers,
    • une implémentation MapReduce,
    • un SDK .NET pour les développeurs (des outils permettant d’attaquer le tout depuis Visual Studio).

Mon avis: Excellente présentation. Il a dressé une image claire et sans fausses promesses de l’écosystème Big Data Microsoft. Vraiment top. Par ailleurs si vous voulez creuser le sujet, je vous conseille cette série d’article en français que mon camarade Romain Casteres a co-écrit.

24h of PASS : Jessica Moss – Ne pas oublier le Business dans Business Analytics

Un peu de contexte: j’ai assisté à quelques sessions du dernier 24h of PASS, 12 sessions d’1h en webcast, de très grande qualité, organisées par le PASS, suivi de 12h de rediffusion. Les enregistrements sont déjà disponibles en streaming. Je vous livre ici un petit compte rendu de ce que j’ai appris.

Sessions: Putting the Business in Business Analytics (Vidéo)

Speaker: Jessica Moss, Architecte / MVP SQL Server BI (BlogTwitter)

A retenir: Un projet décisionnel est un processus itératif en 6 étapes :

  1. Définir des objectifs et les métriques associés
  2. Obtenir les données
  3. Mettre les données à disposition
  4. Analyser les données, comprendre
  5. Adapter, changer le business en fonction des objectifs
  6. Suivre l’impact dans la durée : retour à l’étape 1

Pour elle, les 4 premières étapes sont la Business Intelligence, et font partie d’à peu près tous les projets décisionnels (attention à ne pas bâcler le 1…). Réaliser un cycle complet, et itérer sur ce cycle, c’est ça le vrai Business Analytics.

Mon avis: On rejoint ce que trop peu nombreux d’entre nous reconnaissent depuis un moment : un projet de BI c’est un outil permettant l’application d’une stratégie d’entreprise, et qu’il s’accompagne d’une véritable gestion du changement dans la durée. En tout cas si on veut avoir des résultats.

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 😉

Le bouquin SSIS 2012, par le trio gagnant Coutaud / Harel / Jehl

C’est avec un grand plaisir que j’ai reçu un exemplaire gracieux du livre SQL Server Integration Services 2012 – Mise en œuvre d’un projet ETL avec SSIS 2012, aux éditions ENI, écrit par les très respectables Patrice Harel, Romuald Coutaud, et François Jehl.

SSIS 2012 - Coutaud, Harel et Jehl - Editions ENI

Je dois encore me le faire dédicacer (perso je profiterai des JSS2012 pour le faire, n’hésitez pas à amener votre copie si vous voulez faire de même), mais ça ne m’a pas empêché de déjà le terminer !

En deux mots : c’est un très bon livre sur SSIS 2012, définitivement le meilleur écrit en français (le seul ? :p), et même sans cet avantage il n’a pas à rougir de son contenu face aux poids lourds américains.

A qui se destine ce livre :

  • Les développeurs, experts techniques et architectes en décisionnel Microsoft qui veulent se mettre à jour sur 2012. On se fait un chapitre tous les jours pendant 2 semaines et c’est réglé.
  • Les autodidactes qui veulent stabiliser leurs connaissances. On apprend le pourquoi des fonctionnalités et quels sont les cas d’usages classiques du produit (oui on fait tous de l’OLE-DB, pas la peine de souffrir à essayer de faire autre chose). Excellent quand on n’a pas accès à quelqu’un d’expérimenté qui peut répondre aux questions et transmettre les bonnes pratiques.
  • Les développeurs d’ETL non Microsoft, c’est une très bonne première approche pour cerner le produit. Je conseillerais même de lire le livre avant de toucher à SSIS, cela vous donnera une familiarité avec l’interface qui aidera grandement le transfert de compétences.
  • Les chefs de projet : c’est un bon point de référence pour participer aux discussions techniques avec vos développeurs. Il y a un choix d’implémentation à faire et vous voulez comprendre les tenants et aboutissants de la conversation ? Hop hop ouvrez la page correspondante du livre et vous comprendrez les enjeux (attention quand même à ne pas déraper ;))

Ce n’est pas pour :

  • J’aurai du mal à recommander le livre à un vrai débutant. Les auteurs nous préviennent d’ailleurs – le livre nécessite des compétences générales en base de données – j’irai plus loin, il nécessite d’avoir déjà été exposé un minimum au monde joyeux de l’ETL d’entreprise. Parce que si le niveau technique est progressif et bien structuré, ce n’est pas un tutoriel, et un débutant ne saurait pas par quel bout commencer s’il n’avait que ce bouquin sous la main.
  • De même pour un expert technique déjà sur 2012 depuis quelque temps, à qui ne peuvent s’adresser que les 3 derniers chapitres.

Rapide revue des chapitres :

  1. Introduction à SSIS : Un peu trop rapide à mon gout. Il manque l’historique du produit, de sa place dans la chaîne BI Microsoft, de son positionnement par rapport aux concurrents (forces et faiblesses)… Mais vous le savez, c’est ma marotte, j’aime avoir le contexte, connaître le pourquoi d’une situation, d’un produit, et ça s’applique même dans un bouquin sur SSIS 😉
  2. Flux de contrôle : Excellent chapitre, exhaustif et qui donne des éléments de contexte sur les fonctionnalités. Must read : la revue des connecteurs de base de données (ADO.NET, ODBC, OLE DB…) et le petit guide de quand employer lequel (p41).
  3. Variables, paramètres et expressions : Très bonne lecture, mais à mon sens il manque une petite explication du besoin fonctionnel avant le détail et l’exemple d’implémentation. On a les outils et la solution sans avoir le problème initial. Par ailleurs c’est un très bel exemple d’implémentation qui a été choisit, qui illustre bien le rôle de chacune des fonctionnalités. Must read : la liste des types de données des variables et leur correspondance en type de base de données (Double c’est DT_R8 ou DT_I8 ? réponse page 135 :)).
  4. Manipulation de données simples : Passage assez descriptif obligatoire mais pas vraiment passionnant pour un vieux de la vieille !
  5. Transformation de données : Une explication des composants de la boîte à outils de SSIS 2012. J’aime les petites remarques qui viennent rappeler les cas d’usages réels, leur emploi dans la vraie vie en somme, et pas uniquement les vœux de Microsoft. Quelques pages sur le CDC et DQS, c’est bon à prendre !
  6. Flux de données multi-source et jointures : Un bon comparatif des différentes solutions de brassage de flux de données dans le data flow. J’aime qu’on se détache un peu des composants pour penser flux de données. Must read : les petits schémas explicatifs des LEFT/RIGHT/INNER/FULL OUTER JOIN (p238), un petit test que d’ailleurs j’adore faire passer à mes développeurs juniors pour valider leur compréhension de la chose.
  7. Événements et suivi d’exécution : Le détail du gestionnaire d’événements (avec le bon conseil de modérer son utilisation), de la gestion des logs, du debug, du monitoring et de la nouveauté 2012 : les data taps. Des sujets pas forcément ultra-sexys mais présentés de manière très digeste.
  8. Administration SSIS : Chapitre qui débute avec un comparatif entre l’ancien mode de déploiement (granularité package) et le nouveau (granularité projet) qui cohabitent dans SSIS 2012. Je ne suis pas convaincu comme les auteurs que le nouveau mode doit être utilisé systématiquement. J’ai fait quelques projets Datastage (chut !) qui utilise largement la notion de repository, et j’aime beaucoup l’indépendance que fournit SSIS en mode déploiement de package (rien de tel que les déploiements en mode dépose de fichiers dtsx sur le disque du serveur, aucune équipe d’exploitation ne peut se planter). Je suis content que le choix reste possible dans 2012 et j’espère qu’il le restera dans le futur. Le reste du chapitre détaille bien les possibilités d’administration offertes par SSIS dans les 2 modes de déploiement.
  9. Checkpoints et transactions : Un très bon chapitre sur une fonctionnalité à oublier de SSIS, c’est un peu du gâchis ! En tout cas respect aux auteurs d’avoir pris le temps de traiter le champ de mines qu’est la configuration des checkpoints. Pour les transactions je dirais que soit elles sont traitées trop rapidement, soit elles ne sont pas assez creusées. Mais je ne peux pas leur en vouloir : c’est un sujet délicat qui justifierait à lui seul plusieurs chapitres et qui n’est finalement que très rarement employé.
  10. Notions avancées et bonnes pratiques : Un chapitre définitivement trop court ! Je comprends que les auteurs ne veulent pas nous révéler tous leurs secrets, mais j’en aurais voulu plus 😉 Par exemple quelques implémentations des scénarios classiques dans SSIS : la détection de doublons, le nettoyage d’un champ texte, la conversion d’une date, le chargement d’une table de fait, la gestion d’une table de transcodage…
  11. Programmation de composants SSIS : J’avoue avoir parcouru le chapitre en diagonale, mais j’y ai trouvé ce qui me semble être un très bon tutoriel pour le développement de son premier composant perso, partant des méandres des éléments à installer sur son poste et les serveurs jusqu’à l’ajout d’une interface graphique pour le paramétrage à l’utilisation. Beau boulot !

A mon sens il manque, dans le désordre :

  • Le load balancing de packages sur une ferme de serveurs SSIS, et plus globalement un petit chapitre sur le déploiement de SSIS sur des grosses infrastructures
  • La gestion des comptes de service et l‘héritage des droits à l’exécution (oui je te regarde SQL Agent)
  • Des recommandations / abaques sur les performances attendues en fonction de volumétries classiques sur 2/3 configurations matérielles standard. Histoire de savoir si on est dans les clous ou à côté de la plaque en traitant 5 millions de lignes de 20 colonnes de texte en 10 minutes sur un quad-core avec 16Go de RAM et un disque 7200tpm. Très grosse maille évidemment.
  • Une vision un peu plus architecture et un peu moins produit. Gérer sa solution et ses projets, l’atomicité d’un package et d’un data flow, l’enchainement des packages (children ou par SQL Agent)…
  • Le détail de l’accès aux features en fonction des éditions (standard, BI, entreprise)
  • Une petite conclusion sur le futur de SSIS dans le cloud azuré?

Évidemment le bouquin fait déjà 450 pages, alors à un moment il faut savoir tailler pour sauver les arbres 😀

En conclusion :

Je recommande sans problème. Beau travail messieurs, merci pour votre dur labeur, à quand le prochain sur SSAS ? 🙂

Conseil aux développeurs d’ETL : automatisez vos traitements au plus tôt

Votre ETL est planifié en traitements périodiques ? Quotidiens, hebdomadaires, mensuels ?

Alors faites les tourner de manière automatique le plus tôt possible dans le projet, avec la fréquence la plus haute possible. Si vous avez des alimentations mensuelles qui, vous le savez, passent en hebdo, passez les en hebdo.

N’attendez pas la phase d’intégration (si vous en avez une), ou la phase de recette, pour les exécuter régulièrement. Dès qu’ils sont prêts, automatisez-les !

Pourquoi ?

Si je peux prendre une image, les premières alimentations d’un datawarehouse avec un ETL c’est l’équivalent de vider un étang avec une pompe fragile et un tuyau percé :

  • Plus vous utiliserez votre système, plus vous constaterez les fuites du tuyau. Si vous le faites suffisamment en amont, vous aurez un maximum de temps pour aller coller des rustines.
  • Au fond de l’étang, il y a la vase – les cas spécifiques tordus, les anomalies de production – et quoi qu’il se passe il va falloir l’aspirer. Le plus tôt ça passe dans le tuyau, le plus tôt ça fait étouffer la pompe, le plus vous aurez de marge de manœuvre pour adapter vos traitements et nettoyer tout ça. Mieux vaut s’en débarasser dans la phase de réalisation qu’en recette.
Eviter de patauger !

Eviter de patauger !

Cela peut paraître évident, mais cet été j’ai été confronté à 2 projets dont les ETL n’étaient toujours pas automatisés au lancement de la phase de recette fonctionnelle. Bon courage aux équipes de développement respectives pour éponger la dette technique.