OSBI.FR - Open Source Business Intelligence

Cubes OLAP avec Mondrian

Depuis que je tiens ce blog, il me semble n’avoir jamais présenté dans le détail Mondrian, véritable « Rolls de l’OLAP » (en mode Open Source bien sûr !)

Il était enfin temps de remédier à cela 😉

Pour bien comprendre les fonctionnalités et les caractéristiques de Mondrian, il faut maîtriser quelques concepts de base de l’analyse multidimensionnelle et les termes associés: notion de cubes, modélisation en étoile et en flocon, tables de faits et de dimensions, mesures, hiérarchies, niveaux, membres, …

Il existe d’excellentes ressources sur le web pour mieux comprendre l’ensemble de ces concepts (à lire avant de poursuivre cet article si besoin)

Architecture

Mondrian est un moteur OLAP (Online Analytical Processing) écrit en Java par Julian Hyde qui permet la conception, la publication et le requêtage de cubes multidimensionnels.

Mondrian permet l’exécution de requêtes en langage MDX sur des entrepôts de données s’appuyant sur des SGBDR, d’où sa caractérisation de « ROLAP » (Relational OLAP). En matière de ROLAP, Mondrian est la référence open source.

Mondrian permet d’accèder aux résultats dans un format multidimensionnel compréhensible par une API de présentation côté client, le plus souvent en mode Web, avec par exemple JPivot, Pentaho Analyzer, Pentaho Analysis Tool, Geo Analysis Tool (G.A.T.)

Mondrian s’appuie sur une modélisation OLAP standard et peut donc se connecter à n’importe quel entrepôt de données conçu dans les règles de l’art de la Business Intelligence.

Il est intéressant de noter que Mondrian est le composant OLAP utilisé par la plupart des suites de BI Open Source notamment Pentaho, JasperServer et SpagoBI.

Jedox PALO fait d’ailleurs figure d’exception avec son moteur spécifique MOLAP (dans ce cas les données du cubes sont toutes précalculées, ce qui possède l’avantage d’être très rapide côté temps de réponse, mais un peu plus contraignant lorsqu’on souhaite modifier la vue OLAP ou accèder aux données de détail de la table de faits)

Pentaho étant l’éditeur qui héberge et soutient la communauté Mondrian (mondrian.pentaho.org), je présente ci-dessous un schéma d’architecture de Mondrian et son utilisation au sein de la plate-forme Pentaho.

Note: Bien sûr, un serveur Mondrian peut-être utilisé en tant que tel, sans être embarqué dans une plate-forme décisionnelle OSBI…

Les éléments caractéristiques de l’architecture présentée ci-dessus sont les suivants :

  • Datawarehouse avec stockage des données au format OLAP. Les schémas en étoile et en flocons sont gérés par Mondrian, ainsi que de nombreux autres concepts propres à l’OLAP (voir plus loin le détail dans « caractéristiques fonctionnelles »)
  • Serveur web J2EE Pentaho. Ce serveur embarque le moteur ROLAP Mondrian qui permet d’effectuer des requêtes multi-dimensionnelles (langage MDX) sur des données stockées dans un SGBD relationnel (interrogation SQL).
  • Pour la partie conception, les cubes sont modélisés avec « Pentaho Schema Workbench », un client riche open source (en java)  de modélisation et de publication de schémas Mondrian sur un serveur Pentaho
  • Pour la partie restitution, les vues métiers sont accessibles en client léger via un navigateur web (Internet, Explorer, Firefox, Safari, Opera, …). La mise en place d’un serveur Pentaho Enterprise permettra d’effectuer des analyses avancées avec le composant Pentaho Analyzer, si on veut rester en open source on utilisera JPivot, qui reste encore malgré son « grand âge » un outil de requêtage puissant et stable, en attendant un digne successeur, probablement Pentaho Analysis Tool

Caractéristiques fonctionnelles

Les caractéristiques de Mondrian sont les suivantes :

  • Stockage des données dans un SGBDR: les données sont entreposées dans des tables de faits et de dimension, selon la modélisation habituelle en étoile et/ou flocons (Mondrian sait gérer les 2)
  • Mondrian permet (si nécessaire) l’utilisation de tables d’agrégation afin d’optimiser au mieux les performances. Ces tables doivent être chargées en même temps que l’entrepôt de données, via les mécanismes habituels d’alimentation ETL. Il est également possible de s’appuyer sur des « vues matérialisées » si le SGBD les supporte. Le serveur Mondrian fournit également un mécanisme de mise en cache qui permet d’obtenir des délais de réponse minimums.
  • Utilisation des dimensions partagées (« shared dimension », ou « dimensions conformes ») pour la mutualisation de celles-ci entre plusieurs cubes
  • Ajout de membres calculés (très utile pour effectuer des calculs de pourcentage par exemple, recalculés dynamiquement selon le niveau d’agrégation choisi)
  • Gestion des hiérarchies multiples, dimensions dégénérées et « inline tables »
  • Gestion de la sécurité d’accès aux cubes via des rôles: sécurisation  au niveau du cube, des dimensions, des hiérarchies et des membres à afficher ou non
  • Internationalisation possible (multilinguisme) via l’implémentation du standard i18n

Mondrian s’appuie sur des schémas XML pour la définition des cubes. Un schéma Mondrian permet donc de définir le modèle logique ainsi que le mapping sur le modèle physique :

  • Le modèle logique décrit les cubes, les dimensions, les hiérarchies, les niveaux et les membres (et plus encore…) sur lesquels vont s’appuyer les requêtes MDX.
  • Le modèle physique correspond à la source de données sur laquelle s’appuie le modèle logique (le modèle en étoile et/ou flocon)

Les schémas Mondrian sont créés par les concepteurs et analystes avec l’outil « Pentaho Schema Workbench » dont une description est donnée dans le paragraphe suivant.

Pentaho Schema Workbench

Pentaho Schema Workbench est un client riche open source (écrit en Java) qui permet de créer des schémas de cubes sans avoir à connaître la syntaxe XML de Mondrian. Cet outil présente une interface avancée qui permet d’effectuer les actions suivantes :

  • Connexion au datawarehouse (via JDBC)
  • Création de schémas et cubes Mondrian
  • Création des mesures, dimensions et hiérarchies d’un cube
  • Jointures pour les tables floconnées
  • Tables d’agrégation à utiliser (le cas échéant)
  • Création de membres calculés, de dimensions partagées, de cubes virtuels
  • Définition des rôles (gestion de la sécurité d’accès à l’intérieur d’un cube)
  • Publication des cubes sur le serveur Pentaho

Pentaho Aggregation Designer

Pour des volumétries de données conséquentes (tables de faits avec plusieurs centaines de milliers d’enregistrements), un autre client riche de modélisation doit être utilisé:  Pentaho Aggregation Designer.

Cet outil permet de détecter avec un algorithme spécifique quelle tables d’agrégations doivent être créées en fonction de critères de performance spécifiés par le concepteur :

  • délai minimal de réponse du serveur (en secondes)
  • nombre maximal de table d’agrégation.

Une fois les choix validés, l’outil permet :

  • de prévisualiser, d’exécuter ou de sauvegarder le script SQL de création des tables d’agrégation
  • d’exécuter ou  de sauvegarder le script SQL d’alimentation des tables créées
  • de mettre à jour le schéma Mondrian existant avec la définitions des tables d’agrégation créées

Bien sûr, on peut également créer à la main toutes les tables d’agrégation que l’on souhaite, Pentaho Aggregation Designer va se charger de construire le script SQL de génération et de chargement des tables correspondantes !

Interfaces de requêtage web

JPivot est sans aucun doute l’interface web de requêtage open source pour Mondrian la plus utilisée.

Le plus simple est de s’en faire un aperçu dans la vidéo ci-dessous (j’essaierai d’en publier une enregistrée par mes soins d’ici peu…)

Il existe un document plutôt utile (en anglais) qui permet de se familiariser avec l’interface et tous les boutons du menu :

Pour finir…

Je suis certain qu’il vous reste un peu de temps pour répondre au sondage ci-dessous (si ce n’est pas déjà fait…)

[polldaddy poll= »3178909″]

5 Comments

  1. Oui, mais un livre avec un cas pratique de tableau de bord et de rapport avec des données provenant d’une base Mysql d’un ERP open source, style Dolibarr (erp Francais) ou Ofbiz ou Néogia.
    En tout cas MERCI pour ton site riche en explications et très bien présenté 😉

  2. Hello
    merci pour ces explications. J’ai une question simple : est-il possible d’incorporer dans un cube Mondrian plusieurs tables de faits ?
    Merci

  3. Bonjour
    Réponse simple : 1 cube mondrian = 1 table de faits (et pas plus)
    Si on veut mixer les données de plusieurs tables de faits (genre un mix entre des ventes effectives au niveau jour et un budget mensuel), on crée un « virtual cube » qui mappe les données des 2 cubes concernés (donc de 2 tables de faits). Ceci est valable dans Mondrian 3
    Dans Mondrian 4 les virtual cubes sont remplacés par les « MeasureGroups« 

  4. Bonjour , jai une question a te poser stp .
    Je suis entrain de faire un schema mondrian , pour un modele de donnee en flocon de neige . dans mon cube jai la table nature qui est composé dune sous categorie classification . lorsque je termine de dessiner mon cube sur mondrian workbench jai tout le temps cette erreur : Mondrian Error:failed to match primary key table to join tables: J
    Jai deja eu a relaiser plusieurs modeles en etoiles sur mondrian sans aucun soucis , mais actuellement je galere pour representer ce modele en flocon de neige :
    voici une partie de mon schema :
    Dimension name= »natures » highCardinality= »false » visible= »true » type= »StandardDimension »>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*