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.

PowerPivot, BISM, Analysis Services et Marco Russo

Comme je vous le disais tantôt, la semaine dernière j’ai assisté au séminaire de 2 jours de Marco Russo sur PowerPivot.

Ce n’est pas difficile, c’est la meilleure formation a laquelle j’ai eu la chance d’assister, quel que soit le sujet. Que ce soit sur le contenu (précis, clair et exhaustif) ou la présentation (pédagogie, connaissance du sujet, passion), Marco Russo a fait un score parfait. Jusqu’à présent je voyais PowerPivot comme un gadget futur remplaçant d’Access, il m’a bien ouvert les yeux sur ses énormes capacités et le fait que ce soit bien le futur de SSAS. Job well done 🙂

Et hasard du calendrier, c’est justement la semaine dernière que Microsoft a fait le point sur la roadmap de sa plateforme BI pour les années à venir:

En cherchant un peu vous trouverez surement beaucoup d’autres articles sur le sujet (certains en français) et tout autant de discussions.

Moi j’ai eu de la chance, Marco Russo a pris le temps de nous expliquer en direct ce qu’il allait se passer. Chouette non? 😉

Pour la faire en court: SSAS va changer d’architecture pour s’organiser autour d’un modèle dénommé « BISM » (Business Intelligence Semantic Model – Modèle sémantique décisionnel).

Ce BISM comprendra 3 niveaux, chaque niveau pouvant être implémenté de plusieurs façons différentes:

  • Un modèle de données : en multidimensionnel (cf SSAS actuel) ou tabulaire (cf PowerPivot ou une base SQL classique)
  • Un langage de requête : MDX ou DAX
  • Un moteur d’accès aux données : MOLAP (SSAS actuel), VertiPaq (cf PowerPivot) ou un accès direct aux données d’où qu’elles viennent

Notez que lorsqu’on parle ici de modèle de données, on parle de l’implémentation technique (de l’encodage dans une solution informatique) du modèle de données fonctionnel (schéma en étoile, en flocon, ou autre). Mon premier est une suite de 0 et de 1 qui répondent à des contraintes informatiques, mon second est un dessin sur un papier qui répond à des contraintes métiers. Je précise parce qu’au début j’étais perdu: je me demandais à quoi pouvait bien ressembler un modèle de données BI tabulaire? Marco Russo m’a donné la réponse : à un schéma en étoile!

En image, le BISM et ses 3 éléménts ça donne ça:

BISM : l'avenir de SSAS

BISM : l'avenir de SSAS

La première bonne nouvelle c’est que bien que pour la v1.0 les deux piles (Multidim/MDX/MOLAP et Tabulaire/DAX/Vertipaq) soient étanches – on choisit soit une pile soit l’autre, dans le futur on devrait pouvoir choisir de construire la pile que l’on veut avec n’importe quelle brique (Tabulaire/MDX/Vertipaq par exemple). Le choix se faisant alors uniquement en fonction des contraintes métiers / utilisateurs et non de contraintes techniques.

La deuxième bonne nouvelle c’est que si on peut requêter en MDX et en DAX les 2 modèles de données, alors on devrait pouvoir utiliser n’importe quel front end (SSRS, Crescent, PowerPivot…) indépendamment de l’architecture de stockage. Cela lève le doute sur la compatibilité descendante entre Crescent (futur SSRS en DAX) et les cubes SSAS actuels, ça rassure!

Evidemment reste la question de comment faire le choix entre les 2 architectures, et là aussi Marco Russo nous a donné quelques éléments de réponses:

  • Avant tout, que ce soit pour le multidim ou le tabulaire, le schéma en étoile reste la méthode de modélisation des données.
  • Le multidimensionnel sera l’outil de choix pour travailler sur des données fortement hiérarchisées, utilisant des calculs mathématiques sur ces hiérarchies (par exemple sur le temps), avec des relations complexes (many to many) et où l’importance des données réside dans les chiffres (qui a dit finance dans le fond?)
  • Le tabulaire (avec Vertipaq et la compression en colonne) est ultra efficace sur les calculs en distinct et distinct count, même sur des très très gros volumes de données, il manipule bien les chaînes de caractères et est beaucoup plus facile à comprendre pour les utilisateurs (on dirait Access!)

En terme de proportions, Marco Russo nous a dit qu’il voyait les futurs projets ventilés en:

  • 30% ne pouvant être réalisés qu’avec du Multidim
  • 10% ne pouvant être réalisés qu’avec du Tabulaire
  • 60% au choix, avec beaucoup de Tabulaire puisque plus facile à implémenter

Personnellement je retrouve l’enthousiasme sur le futur de la BI Microsoft. Même si on est encore un peu déshabillé point de vue reporting, l’offre Microsoft est vraiment très belle point de vue moteur. Entre le dB Engine SQL, MOLAP et Vertipaq, on a de très belles technologies, partiellement recouvrantes mais pas redondantes, qui ont du sens et qui pulsent point de vue performance. Avoir des bons outils c’est essentiel pour bien faire son job, là je me sens bien équipé. C’est cool 🙂

SQLPASS 2010 – Journées 2 et 3

Oh mon dieu! Il s’en est passé des choses en 2 jours! C’est la révolution 🙂

D’abord SSIS, qui d’après Jamie Thomson ne change pas beaucoup en dehors de la refonte de l’interface dans VS2010:

Ensuite SSAS, qui lui explose dans tous les sens:

Vous avez remarqué comme le powerpivotiste aime et le pro-mdx n’aime pas?

Pour voir pourquoi, il faut comprendre que désormais les deux fonctions du datawarehousing (stockage longue durée et analyse/restitution) sont vraiment séparées dans les produits Microsoft.

En stockage longue durée on a SSIS pour l’alimentation et SQL Server (dB Engine) pour le stockage. Les deux produits sont matures, de très bonne qualité et reconnus sur le marché. Pas de débat là dessus.

C’est point de vue analyse et restitution que ça change beaucoup. Avant (enfin maintenant quoi…) on avait trois possibilités pour faire le job:

  • Source SQL Server restituée dans SSRS: facile (SQL) mais pas optimisé pour 2 sous
  • Source SSAS restituée dans SSRS: complexe autant dans le langage de requête (MDX) que dans l’incapacité chronique des 2 softs à tourner ensemble, mais super performant
  • Source SSAS restituée dans Excel: sympa mais uniquement pour les gros joueurs d’Excel qui veulent jouer avec la donnée

Ce sont ces schémas qui évoluent pour passer à deux nouvelles manières d’organiser les données en source, que tous les outils de reporting devraient être capable de requêter:

  • La nouvelle vision, le BISM (BI Semantic Model), qui est une vue relationnelle des données, qui utilise le moteur VertiPaq et le langage DAX
  • La vision actuelle, l’UDM (Unified Data Model), qui est la vue multidimensionnelle qu’on connait déjà, utilisant le moteur SSAS « classique » et le langage MDX

En image ça donne ça:

Bon bin c’est super en fait! Ça nous donne une nouvelle corde à notre arc sans éclater l’existant, en fait c’est chouette!

Sauf que… Sauf que le nouveau SSRS (Project Crescent) est DAX only, tout comme l’est PowerPivot, et qui dit PowerPivot dit Excel et SharePoint à moyen terme. Ça ne laisse donc que l’éco-système hors Microsoft pour s’occuper du MDX à moyen terme. Juste quand le langage commence à gagner de la traction chez les autres vendeurs. Ça ressemble beaucoup à du fire and motion tout ça. C’est pas joli-joli!

On comprend donc que les experts SSAS tirent la tronche et les experts PowerPivot sabrent le champagne 😉

Et pour nous commun des mortels? Personnellement je suis plutôt optimiste, je cite Rob Collie (ancien program manager SSAS quand même) dans l’article que j’ai linké plus haut:

The SQL team at MS has long had three teams in the BI space:  SSAS, SSRS (Reporting Services), and SSIS (Integration Services).  Both AS and RS got along great with IS, but in all honesty, AS and RS have behaved more like rivals for as long as I can remember.

Well, a number of the personalities behind the scenes that were responsible for that competitive vibe have departed.  And the results are resoundingly positive – the two teams are now cooperating.  Fully.

Donc pour la première fois les équipes SSAS et SSRS bossent main dans la main. Vu le talent de ces équipes, personnellement j’ai confiance 🙂

SQLPASS 2010 – Première journée

Qu’est ce que le SQLPASS? Ce n’est rien d’autre que la plus grande messe SQL Server réalisée par une organisation qui n’est pas Microsoft. En effet cette conférence est organisée par le PASS (Professionnal Association for SQL Server) dont l’antenne en France est le GUSS (Groupe des Utilisateurs de SQL Server).

Bien qu’elle ne soit pas réalisée par Microsoft, la société y est bien présente, et on y apprend pas mal de nouveautés sur ce qui nous attend dans la prochaine version de SQL Server (SQL11, nom de code Denali).

Si ça vous intéresse, n’hésitez pas à suivre Christian Robert qui nous rapporte en français sur son blog ce qui se trame là bas.

Personnellement j’ai apprécié le résumé de la première journée faite par Chris Webb, qui comme François Jehl se concentre sur les nouveautés BI qui sont:

  • L’intégration du moteur Vertipaq (stockage verticale) dans SQL Server, voir l’article de Chris Webb pour ce que cela signifie point de vue usage.
  • PowerPivot devrait recevoir une nouvelle version plus « pro », on en saura plus dans les jours qui viennent.
  • L’équipe SSRS nous pond un nouvel outil de reporting ad-hoc: Project Crescent.
  • SSIS qui évolue autant sur le moteur que sur l’interface, Jamie Thomson en fait le détail.

En tout cas ça fait plaisir de voir que ça bouge enfin, même si pour le moment j’ai un peu du mal à percevoir la stratégie globale qui se cache derrière tout ça.

Sécurité des données dans l’environnement SQL Server

Lors d’un des derniers projets auquel j’ai participé, nous avons eu à mettre en place une sécurité à la ligne. Rien d’extraordinaire en soi, mais c’est un bon cas d’étude pour comprendre comment fonctionne la sécurité entre les différentes briques de l’environnement SQL Server.

J’ai essayé de schématiser ça en 3 dessins Visio que je laisse en téléchargement par ici (C’est la première fois que j’utilise Google Document comme ça, mailez moi si ça ne marche pas).

Pour faire court :

  • Un groupe d’administration accède à une interface ASP.NET qui lui permet de définir des couples Utilisateur / Périmètre. Le périmètre s’applique sur une hiérarchie organisation, il se compose d’un niveau et du code de l’entité à ce niveau.
  • Le groupe d’utilisateur accède à un reporting qui utilise un cube et des données de la base. On doit lui appliquer la sécurité définit par les administrateurs.

Pour implémenter une sécurité à la donnée, on ne peut pas donner des droits DataReader/DataWriter aux utilisateurs sur la base. En effet la granularité minimale de la sécurité sur SQL Server c’est la table, ni la ligne ni la colonne.
Il va donc falloir utiliser des procédures stockées (droits GRANT EXECUTE) et joindre les résultats sur la table qui stocke les couples Utilisateur / Périmètre.
Pour le cube, il va falloir définir un rôle qui utilise cette même table.

Le point important dans tout ça, c’est que si votre configuration n’est pas mono-serveur, c’est-à-dire si votre service SSRS n’est pas installé sur le serveur qui héberge la base et/ou le cube, il va falloir mettre en place la délégation d’autorité en utilisant Kerberos. C’est en effet la seule manière de faire propager le UserId depuis le SSRS frontal jusqu’aux cubes et aux procédures stockées. Dans le cas contraire, ce sera le compte de service de SSRS qui se propagera jusqu’aux données.

On peut contourner ce pré-requis si on n’utilise pas de cube dans la solution. Pour ce faire, il suffit de transmettre la constante User !UserId de SSRS en paramètre à la procédure stockée appelée. Ce n’est pas la best practice, mais ça marche. Cette manipulation n’est pas possible pour SSAS puisque la gestion des droits est transparente dans le cube.

Voici le premier schéma, il présente une vue d’ensemble de la configuration:

Vue d'ensemble de la sécurité

Concernant la sécurité fonctionnelle, la sécurité à la ligne, on peut utiliser un jeu de tables comme cela pour l’implémenter:

Définition de la sécurité

Et enfin, pour utiliser tout ça, il faut employer les scripts suivants:

Utilisation de la sécurité

Rappel : si vous voulez le VSD de ces schémas, il suffit de remonter en haut de l’article.

Ne disposant pas de la science infuse, j’apprécierai sincèrement les éventuelles corrections / améliorations que vous auriez à proposer 🙂

SQL Server 2008 SP2 et autres sucreries

La nouvelle de la journée : le SQL Server 2008 SP2 sort aujourd’hui! Il est détaillé sur le Team Blog, et se télécharge par là.

J’en profite pour faire le relai d’une sélection d’articles techniques que j’ai collectionné ces 2 derniers mois:

SSRS

  • Importer des cartes autres que celle des USA dans les rapports, via Kasper de Jonge.

SSIS

  • Minimiser les dégâts lorsqu’on effectue un produit cartésien (cross join) dans un flux de données, via Todd McDermid.
  • Une belle remise à plat sur l’utilisation des variables dans les Script Tasks et Script Components, via Todd McDermid encore.
  • Un composant à tester: un nouveau Data Conversion, via Todd McDermid toujours.
  • Une petite piqure de rappel sur les Events et Event Handlers, via le Database Journal.
  • Importer les valeurs d’un result set ADO dans un chaîne, séparées par des virgules. C’est un peu tortueux, mais c’est parfait pour générer des requêtes SQL à la volée. Via SqlServerCentral (enregistrement gratuit)

SSAS

  • MDX : Existing, Count et Filter via Thomas Ivarsson. Il n’explique pas assez à mon gout, mais en jouant avec ses requêtes on comprend bien.

T-SQL

  • Implémenter des tests unitaires automatisés dans Visual Studio 2010 pour le développement des procédures stockées. Ça c’est un sujet à creuser, via Jamie Thomson.
  • Utiliser le MERGE dans SQL Server 2008, via Robert Sheldon de Simple Talk. J’ai honte mais je n’ai pas encore eu le temps de vraiment regarder… Bouh!
  • Dédoublonner un data set grâce à la clause PARTITION BY. Pas sur que ça nous soit très utile en BI cependant, via SqlServerCentral (enregistrement gratuit)

ASP.NET

SharePoint

  • Un livre blanc sur l’authentification Kerberos dans SharePoint 2010, via Kasper de Jonge.