MONDRIAN Jpivot Final

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 26

RÉPUBLIQUE DU CAMEROUN FACULTE DES SCIENCES

REPUBLIC OF CAMEROON FACULTY OF SCIENCES


Peace – Work - Fatherland
Département
UNIVERSITÉ DE DSCHANG
de Mathématiques et
UNIVERSITY OF DSCHANG
Informatique
Scholae Thesaurus DschangensisIbiCordum
BP 96, Dschang (Cameroun) –
Department of Mathematics
Tél. /Fax (237) 233 45 13 81 and Computer Science
Website:http://www.univ-dschang.org.
E-mail : udsrectorat@univ-dschang.org BP 67, Dschang (Cameroun)
Tél./Fax (237) …E-mail :
faculte.sciences@univ-dschang.org

Intitulé de la Matière : Entrepôt de donnees

NAVIGATION
MULTIDIMENTIONNELLE AVEC
Mondrian/JPivot

Présenté par :
Nom et prénom matricules
CM-UDS-14SCI2036
MFONE ABDOULAYE
ATCHAZE ARIEGE CM-UDS-14SCI1923

DJAMBOU GEORGETTE MICHELE CM-UDS-18SCI2762

TSALA STEVE GIRES CM-UDS-14SCI2114

Sous la supervision de : Dr Bomgni


Alain
Option : Réseaux et Services Distribué
Classe LMD : Master 1 (INF4)
MONDRIAN/JPIVOT

Table of Contents
Introduction ........................................................................................................................................ 2
I. Architecture logicielle utilisée ...................................................................................................... 3
A. Le serveur MONDRIAN et le client JPivot ................................................................3
1. Le serveur MONDRIAN ..........................................................................................3
Les moteurs OLAP ..........................................................................................................3
2. Le Client JPIVOT......................................................................................................4
II. Fonctionnement générale............................................................................................................ 5
A. Installation et configuration de MONDRIAN/JPIVOT ..............................................5
1. Prérequis ...................................................................................................................5
2. Installation de MONDRIAN/JPIVOT et Configuration de la connexion au serveur
mysql ...............................................................................................................................5
3. Configuration de source de données en JPIVOT ........................................................6
4. .....................................................................................................................................6
III. Exemple d’entrepôt sous MONDRIAN .......................................................................................... 8
A. Description de l’entrepôt ...........................................................................................8
B. Schéma MONDRIAN de l’entrepôt en XML ........................................................... 10
C. Cube ........................................................................................................................ 10
D. Mesures ................................................................................................................... 10
E. Dimensions, membres, hiérarchies et nivedaux ........................................................... 11
F. Correspondances des dimensions et des hiérarchies avec les tables ............................. 12
G. Membre « All » et par défaut ................................................................................... 14
H. La dimension « temps » ........................................................................................... 14
IV. Analyses OLAP en JPIVOT........................................................................................................... 15
1. Origine de MDX ..................................................................................................... 15
2. Format et exemple d’une requête MDX ................................................................... 16
3. Quelques exemples de requêtes MDX ..................................................................... 18
B. Usage de l’interface JPIVOT ................................................................................... 19
Conclusion ......................................................................................................................................... 24
Bibliographie : ................................................................................................................................... 25

1
MONDRIAN/JPIVOT

Introduction
L’évolution permanente des technologies de l’information conduit de plus en plus
d’acteurs (entreprises, recherche,...) à conserver leurs données et ainsi préserver la mémoire
de leurs activités. Les données collectées par ces acteurs sont un atout puissant pour dégager
des tendances passées, actuelles et surtout futures. À partir des gisements de données ainsi
constitués, il est naturel de chercher à les exploiter au mieux. Apparus pour gérer de très gros
volumes de données issues de sources hétérogènes, les entrepôts de données ou en anglais
Data warehouses, constituent l’outil essentiel de collecte et de mise à disposition des données
en vue de leur analyse. L’analyse de ces données fait appel à des traitements OLAP (On-Line
Analytical Processing), qui se distinguent des processus OLTP (On-Line Transactional
Processing) principalement par leur complexité et par le nombre de données.

2
MONDRIAN/JPIVOT

I. Architecture logicielle utilisée


A. Le serveur MONDRIAN et le client JPivot
1. Le serveur MONDRIAN
Mondrian est un serveur OLAP écrit en JAVA. Cet outil open source fait partie de la suite
Pentaho Analysis Services, mais peut s’installer indépendamment. Mondrian utilise le langage
d’interrogation MDX, le XMLA et les spécifications Java OLAP Interface (olap4j) afin de
s’interfacer avec d’autres serveurs. C’est un serveur R-OLAP, c'est-à-dire qu’il lit par le SQL
les sources de données et agrège le tout en mémoire cache.

Mondrian possède de nombreux atouts, il conserve de bonnes performances face à un


grand volume de données en analyse interactive, il permet l’exploration dimensionnelle des
données, il transcrit le MDX en SQL afin de construire ses requêtes dimensionnelles, il utilise
les expressions calculées du langage MDX afin de produire des calculs avancés.

Les moteurs OLAP.

On distingue 3 familles de moteur OLAP sont : les R-OLAP, les M-OLAP et les H-OLAP :

• Les outils relationnels OLAP (ROLAP)


Les données sont stockées dans une base de données relationnelle, le moteur OLAP
permet de simuler le comportement d’un SGBD multidimensionnel

• Les outils MOLAP


- Utilisent un système multidimensionnel« pur »qui gère les Structure
multidimensionnelles natives(les cubes)
- Accès direct aux données dans le cube Les outils HOLAP (Hybrid OLAP)
- Tables de faits et tables de dimensions stockées dans SGBD Relationnel
(données de base)
- données agrégées stockées dans des cubes

Fonctionnement général de Mondrian avec le client JPIVOT

Un cube Mondrian peut également être implémenté dans une plate-forme telle que
Jasper, Pentaho ou SpagoBI. L'interrogation se fera alors à travers l'outil « JPivot », en mode

3
MONDRIAN/JPIVOT

web. Ci-dessous le schéma d'architecture nous permet de comprendre les mécanismes mis en
œuvres :

1. l'outil client transmet une requête au format MDX (multidimensionnel expression) au


serveur MONDRIAN

2. après validation du format de la requête, celui-ci utilise le schéma XML correspondant aux
données à traiter afin de transmettre une demande formatée à la couche de requêtage SQL

3. la couche de requêtage accède à la base physique et extrait les données correspondantes à


la requête

4. Les résultats sont transmis à l'outil client.

Figure 1: fonctionnement général de Mondrian avec JPIVOT

2. Le Client JPIVOT
JPivot est un outil qui permet aux utilisateurs d’exécuter des navigations OLAP. Couplé à
Mondrian, ce duo logiciel performant est employé dans la plupart des suites décisionnelles
open source. JPivot est une bibliothèque de balises JSP. JPivot est le compagnon visuel du
moteur OLAP Mondrian. Tout comme Mondrian, JPivot est open source et écrit en Java. Il est
donc possible, au sein d’une organisation, d’écrire son propre client OLAP en modifiant

4
MONDRIAN/JPIVOT

JPivot. JPivot a l’avantage d’être disponible gratuitement et de fonctionner avec une panoplie
de plateformes.

II. Fonctionnement générale


A. Installation et configuration de MONDRIAN/JPIVOT
Dans cette partie, nous allons présenter la mise en œuvre de Mondrian avec JPivot
comme client.
1. Prérequis
Avant de commencer l’installation nous devons disposer des outils suivants :
 Kit de développement Java 5 (JDK) ou une version plus récente
(http://java.sun.com/j2se/1.5.0/install-windows.html#install)
 Xampp V 3.2.* qui inclut outil Tomcat
 Un SGBDR (pour le cas de notre travail nous avons choisi MYSQL)
(http://dev.mysql.com/doc/refman/5.0/en/windows-installation.html)
 Pilote JDBC MySQL (http://dev.mysql.com/downloads/connector/j/5.1.html)
 Mondrian (https://sourceforge.net/projects/mondrian/)

2. Installation de MONDRIAN/JPIVOT et Configuration de la connexion au


serveur mysql
1. Décompressez mondrian-3.1.1.12687.zip

2. Rassurez-vous d’avoir installé au préalable Xampp V 3.2, puis rendez-vous dans le


répertoire mondrian-3.1.1.12687\lib.
3. Copier le fichier mondrian.war dans Xampp/tomcat/ webapps/
4. Démarrer xampp (Apache MySQL, tomcat). Retourner dans Xampp/tomcat/ webapps/ un
dossier mondrian a été générer
5. Copier le .jar du Pilote JDBC MySQL et le placer dans
xampp\tomcat\webapps\mondrian\WEB-INF\lib
NB : Mondrian a fourni un exemple de base de données Foodmart au format MySQL complet,
pour que vous l'utilisiez dans le serveur de base de données MySQL Vous pouvez télécharger
le fichier compressé tar.gz à partir de http://pentaho-en.phiintegration.com/mondrian/mysql-
foodmart-database.
6. en supposant que mysql est en cours d'exécution et votre client mysql.exe est situé dans
C:\xampp\mysql\bin avec votre fichier script précédemment extrait dans
C: \foodmart_mysql.sql. Ouvrez l'invite de ligne de commande (Démarrer | Exécuter
|tapez cmd | cliquez sur OK). 7. cd C:\xampp\mysql\bin
mysql.exe –u root -e "CREATE DATABASE Foodmart "
mysql.exe –u root Foodmart <C: \ foodmart_mysql.sql mysql.exe
–u root Foodmart -e "SHOW TABLES"

5
MONDRIAN/JPIVOT

8. Rendez-vous sur votre navigateur et saisissez http: // localhost: 8080 / mondrian et vous
obtiendrez une page d'accueil Mondrian comme ci-dessous.

Figure 2 Page d'accueil de Mondrian:

3. Configuration de source de données en JPIVOT


4.
Pour cela Ouvrez le fichier web.xml qui se trouve dans
TOMCAT_HOME/webapps/mondrian/WEB-INF et personnalisez les paramètres de
connexion afin de se connecter à la base données FoodMart que nous venons d'installer. Pour
ce faire, remplacez la ligne

Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB
-INF/queries/FoodMart.xml;
JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;

Par

Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart?user=fo
odmart&#38;password=;Catalog=/WEB-INF/queries/
FoodMart.xml;JdbcDrivers=com.mysql.jdbc.Driver;

Modifier les fichiers

• fourheir.jsp,
• mondrian.jsp,
• colors.jsp
• arrows.jsp

6
MONDRIAN/JPIVOT

qui se trouvent dans TOMCAT_HOME/webapps/mondrian/WEB-INF/queries.


Remplacez la ligne :

<jp:mondrianQuery id="query01" jdbcDriver="sun.jdbc.odbc.JdbcOdbcDriver"

jdbcUrl="jdbc:odbc:MondrianFoodMart" catalogUri="/WEB-INF/queries/FoodMart.xml">

Par

<jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver"


jdbcUrl="jdbc:mysql://localhost/foodmart? user=foodmart&password=
" catalogUri="/WEB-INF/queries/FoodMart.xml">

Copiez le fichier JAR du pilote JDBC (dans notre cas, le fichier mysql-connector-
java3.0.17-ga-bin.jar) dans TOMCAT_HOME/common/endorsed. Relancez ensuite
Tomcat. Connectez-vous à Mondrian via l'adresse http://localhost:8080/mondria .( si tout est
bien configuré on doit pas avoir une page d'erreur.) Vous verrez alors une table que vous
pouvez explorer de façon hiérarchique et une barre d'outils de titre qui comprend des icônes
de configuration.

Figure 3: exemple de table JPIVOT

7
MONDRIAN/JPIVOT

Figure 4: interface d'edition de requete MDX de Mondrian/jpivot

Figure 5:diaramme mondrian/jpivot

III. Exemple d’entrepôt sous MONDRIAN


A. Description de l’entrepôt
Soit un entrepôt de données organisé en étoile autour d’une table de fait « SALES »Avec
les mesures (measures) suivantes : Unit Sales, Store Cost, Store Sales, Sales CountEt
Customer Count, et les dimensions suivantes : Time, Product, Yearly Income, et
Customers. Les dimensions sont généralement organisées en hiérarchies, ainsi dans notre

8
MONDRIAN/JPIVOT

exemple, la dimension Time et la dimension Product sont organisées ainsi comme le montre la
figure suivante :

Figure 6:Les dimensions Time et Product de l’entrepôt exemple.


Différents cubes peuvent être construits à partir de ces dimensions (avec leur niveaux) et ces
mesures. La figure suivante présente la visualisation en MONDRIAN/JPIVOT d’un cube
construit à partir de l’entrepôt:

Figure 7:Visualisation en MONDRIAN/JPIVOT d’un cube construit sur l’entrepôt.

Ce cube présente les dimensions Product et Time avec un certain niveau de détail.

9
MONDRIAN/JPIVOT

B. Schéma MONDRIAN de l’entrepôt en XML


Measures" formula="[Measures].[Store
Sales]-[Measures].[Store Cost]">
<calculatedmemberproperty name="FORMAT_STRING" value="$#,##0.00"/>
</calculatedmember>
</Cube>
</Schema>
Dans ce cube « Sales », les ventes sont observées sur deux dimensions "Time" et
"Gender", Et quatre mesures "Unit Sales", "Store Sales", "Store cost" et "Profit". Dans
les sections Suivantes on précise plus en détail la spécification des structures cube,
mesure et Dimension.

C. Cube
Un cube (<Cube>) est une collection de mesures et de dimensions, identifiée par un
Nom. Les dimensions et les mesures ont la table de faits en commun (dans l'exemple, la table
de faits est "sales_fact_1997"). Le cube « Sales » est spécifié dans le schéma Précédent ainsi :

<Cube name="Sales">
<Table name="sales_fact_1997"/>
...
</Cube>
La table de faits est définie en utilisant <Table>. Si la table de faits n'est pas dans le Schéma
par défaut, on peut fournir explicitement son schéma en utilisant l'attribut "schema". Par
exemple, <Table schema="dmart" name="sales_fact_1997"/>.

D. Mesures
Il existe deux types de mesures : les mesures calculées et non calculées. Dans le schéma
XML précédent, le cube « Sales » des ventes définit plusieurs mesures, dont "Unit Sales" Et
"Store Sales". La mesure "Profit" est une mesure calculée à partir des mesures "Store Sales" et
"Store Cost". Voici ces spécifications liées au cube « Sales » :

<Measure name="Unit Sales" column="unit_sales" aggregator="sum" datatype="Integer"

formatString="#,###"/>

10
MONDRIAN/JPIVOT

<Measure name="Store Sales" column="store_sales" aggregator="sum" datatype="Numeric"

formatString="#,###.00"/>

<calculatedmember name="Profit" dimension="Measures" formula="[Measures].[Store


Sales]-[Measures].[Store Cost]">

Chaque mesure (<Measure>) a un nom, une colonne de correspondance dans la


Table de faits, et un opérateur d'agrégation. L'opérateur d'agrégation est souvent "sum", Mais
d'autres opérateurs comme "count", "min", "max", "avg" et "distinct-count" peuvent Etre
utilisés. L’opérateur «distinct-count" a des limitations si le cube contient une Hiérarchie
parent-fils.

Remarque :

 L'attribut optionnel "datatype" spécifie les types selon lesquels les valeurs des
cellules seront représentées dans le cache de MONDRIAN et comment elles seront
retournées. L'attribut "datatype" peut avoir pour valeur "String", "Integer",
"Numeric", "Boolean", "Date", "Time", et "Timestamp". La valeur par défaut est
"Numeric" à l'exception des opérateurs "count" et "distinct-count" qui ont une valeur
par défaut "Integer".
 L’attribut optionnel "formatString" donne le format à utiliser lors de l'affichage des
données. Par exemple, la mesure "Unit Sales" est affichée sans décimales, alors que la
mesure "Store Sales" est affichée avec deux décimales. L'emplacement des
caractères ',' et '.' dépend des notations adoptées pour afficher les décimales.

E. Dimensions, membres, hiérarchies et nivedaux


Dans une dimension, un membre est un point déterminé par les valeurs
d'attributs de Cette dimension, par exemple la hiérarchie "Gender" a deux membres 'M' et 'F'.
Une hiérarchie est un ensemble de membres organisés selon une structure appropriée Pour
l'analyse. Par exemple, les villes peuvent être regroupées par région et les régions par Pays.
Les mesures étant agrégées pour chaque niveau de la hiérarchie, les ventes d'un pays Sont
calculées à partir des ventes de ses régions. Un niveau est une collection de membres qui ont
la même distance de la racine de la hiérarchie. Une dimension est une collection de
hiérarchies selon laquelle les faits sont observés. Ci-dessous un exemple d'une
représentation XML de la dimension « Gender » :
11
MONDRIAN/JPIVOT

<Dimension name="Gender" foreignKey="customer_id">


<Hierarchy hasAll="true" primaryKey="customer_id">
<Table name="customer"/>
<Level name="Gender" column="gender" uniqueMembers="true"/>
</Hierarchy>
</Dimension>
Pour chaque vente, la dimension "Gender" donne le sexe du client ayant réalisé un
Achat. La dimension « Gender » a une seule hiérarchie et un seul niveau, et elle prend ses
Valeurs à partir de la colonne "gender" de la table "customer". La colonne "gender" a
deux valeurs 'F' et 'M'. La dimension "Gender" a donc deux membres "[Gender].[F]" et
"[Gender].[M]". Cela s'exprime par la jointure entre le table de faits "sales_fact_1997" et La
table de dimensions "customer" sur l'attribut "customer_id".

NB : <<Measures>> est une dimension particulière dans un entrepot de données.Nous


présentons ci-dessous une visualisation de cette dimension par l’intermédiaire du client
JPivot.

Figure 8:présentation de la dimension Mesures(Measures).

F. Correspondances des dimensions et des hiérarchies avec les tables


Une dimension est jointe avec un cube à l'aide de deux colonnes : une colonne dans la table
de faits et l'autre dans la table de dimensions. L'élément <Dimension> a une clé
étrangère (l'attribut foreignKey), qui est le même dans la table de faits. L'élément
<Hierarchy> a une clé primaire, c’est l'attribut primaryKey. Si une hiérarchie est organisée

12
MONDRIAN/JPIVOT

selon plusieurs tables, on peut utiliser l'attribut primaryKeyTable pour lever toute
Ambiguïté :

<Cube name="Sales">

...
<Dimension name="Product" foreignKey="product_id">

<Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product">

<Join leftKey="product_class_key" rightKey="product_class_id">

<Table name="product_class"/>

<Table name="product"/>

</Join>

<!-- Level declarations ... ->

</Hierarchy>

</Dimension>

</Cube>

Remarque : l'attribut uniquemembers est utilisé pour optimiser les commandes SQL. Si On
sait que les valeurs d'un niveau d'une table de dimensions sont uniques sur toutes les Valeurs
d'un niveau parent, il faut alors mettre l'attribut uniquemembers="true" et "false" Sinon.
Par exemple, dans la dimension "Time", la hiérarchie "[Year].[Month]" peut avoir La valeur
uniquemembers="false" au niveau de "Month" car un même mois peut être présent Dans
différentes années. Dans la hiérarchie "[Product Class].[Product Name]", si l’on est Sûr que
"[Product Name]" est unique, alors on peut mettre uniquemembers="true". Dans le Cas
contraire, mettez "false". Dans le niveau le plus haut de la hiérarchie, l'attribut
Uniquemembers="true" car il n'y a aucun niveau parent.

13
MONDRIAN/JPIVOT

G. Membre « All » et par défaut


Par défaut, toute hiérarchie contient un niveau haut appelé 'All', qui contient un seul
Membre appelé '(All {hierarchyname})'. Ce membre est le parent de tous les autres
Membres de la hiérarchie et représente l'agrégation totale sur cette dimension. C'est le
Membre par défaut de la hiérarchie. Il est le membre utilisé pour calculer les valeurs d'une
Cellule lorsque cette hiérarchie n'est pas incluse dans un axe ou un "slicer". Si l'élément
<Hierarchy> a hasall="false", le niveau 'All' est supprimé. Le membre Par défaut d'une
telle dimension est le premier membre du premier niveau.

Par exemple, Dans la hiérarchie "Time", le membre par défaut serait la première année de la
hiérarchie. Le changement du membre par défaut peut prêter à confusion, alors on doit
le laisser Toujours vrai (hasall="true"). L'élément <Hierarchy> a également l'attribut
"defaultmember", utilisé pour changer le membre par défaut de la hiérarchie. Ci-dessous, un

Exemple :

<Dimension name="Time" type="TimeDimension" foreignKey="time_id">


<Hierarchy hasAll="false" primaryKey="time_id"
defaultMember="[Time].[1997].[Q1].[1]"/>
...

H. La dimension « temps »
La dimension temps est basée sur l'année, le mois, la semaine et le jour. Elle est
implantée d'une manière particulière sous MONDRIAN pour prendre en compte la
Spécificité des fonctions liées au temps comme :
 parallelperiod([level[, index[, member]]])
 periodstodate([level[, member]])
 mtd([member])
 qtd([member])
 ytd([member])
 lastperiod(index[, member])

La dimension temps a un attribut "type" dont la valeur est "timedimension". Le rôle D'un
niveau d'une dimension temps est indiqué par l'attribut "leveltype", dont les valeurs Permises
sont les suivantes :

14
MONDRIAN/JPIVOT

Timeyears niveau représentant les années

Timequarters niveau représentant les trimestres

Timemonths niveau représentant le mois

Timeweeks niveau représentant la semaine

Timedays niveau représentant les jours

<Dimension name="Time" type="TimeDimension">


<Hierarchy hasAll="true" allMemberName="All Periods" primaryKey="dateid">
<Table name="datehierarchy"/>
<Level name="Year" column="year" uniqueMembers="true" levelType="TimeYears"
type="Numeric"/>
<Level name="Quarter" column="quarter" uniqueMembers="false"
levelType="TimeQuarters" />
<Level name="Month" column="month" uniqueMembers="false" ordinalColumn="month"
nameColumn="month_name" levelType="TimeMonths" type="Numeric"/>
<Level name="Week" column="week_in_month" uniqueMembers="false"
levelType="TimeWeeks" />
<Level name="Day" column="day_in_month" uniqueMembers="false"
ordinalColumn="day_in_month" nameColumn="day_name" levelType="TimeDays"
type="Numeric"/>
</Hierarchy>
</Dimension>

IV. Analyses OLAP en JPIVOT


Création d’une première requête OLAP
1. Origine de MDX
MDX, acronyme de Multi Dimensional eXpression, est un langage de requêtes OLAP
pour les bases de données multidimensionnelles. Il a été inventé en 1997 par Mosha
Pasumansky au sein de Microsoft.

15
MONDRIAN/JPIVOT

MDX est fait pour naviguer dans les bases multidimensionnelles et pour définir des
requêtes sur tous les objets (dimensions, hiérarchies, niveaux, membres et cellules) afin
d'obtenir (simplement) une représentation sous forme de tableaux croisés.

Une requête MDX retourne un rapport à plusieurs dimensions consistant en un ou plusieurs


tableaux 2D. Il est utilisé par de nombreux outils de l’informatique décisionnelle.

La syntaxe de MDX ressemble à celle de SQL par ses mots clé SELECT, FROM, WHERE,
mais leurs sémantiques sont différentes.
Structure de la requête :
SQL : SELECT column1, column2, …, columnn FROM table

MDX : SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM cube

2. Format et exemple d’une requête MDX


Tout d'abord un cube est composé de dimensions et Une dimension peut contenir une ou
plusieurs hiérarchies.

Par exemple, la dimension "Time" contient deux hiérarchies : "Year, Quarter,


Month" et "Year, Week, Day".

Une Hiérarchie est composée de niveaux ("levels"). Un niveau correspond à un des attributs
de votre base de données. Le plus important est que la séquence des niveaux réponde à une
logique de navigation.

Par exemple, la hiérarchie "Time" est composée des niveaux "Year", "Quarter" et
"Month" ; la hiérarchie "Store" est composée des niveaux "Country", "State", "City" et "Store
Name". Le sens et l'ordre de navigation sont importants.

Un niveau est lui-même composé de membres. Les membres sont les valeurs d'un niveau
détectées par le moteur OLAP et stockées dans les métadonnées. Par exemple, les membres du
niveau "Country" sont "Canada", "Mexico" et "USA".

Un Membre est une instance d'un niveau. Les enfants d'un membre sont tous les membres du
niveau immédiatement en dessous de celui-ci.

Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1

Exemple de déplacement dans les niveaux d’une hiérarchie

16
MONDRIAN/JPIVOT

[Time].[2012]

[Product].[Food]

[Product].[Food].[Baked Goods]

[Product].[All Products].[Food].[Baked Goods]

Un tuple est une suite de plusieurs membres entre parenthèses séparés par une virgule. Un
tuple donne la liste des membres qui identifient une ou plusieurs cellules dans un cube. Une
cellule étant l'intersection des dimensions d'un cube de données.

Un set est un ensemble ordonné de tuples. Un set peut être vu comme une plage de valeurs. Le
set commence par une accolade "{", dans laquelle sont énumérés les tuples séparés par des
virgules, et se termine par une accolade appariée "}"

Un set suivi du mot clef « ON » suivi d'un « nom d'axe spécifique » fait référence à un
numéro d'ordre s'il y a plus de 2 axes de restitution, ou simplement aux noms d'axes explicites
« COLUMNS » et « ROWS ».

Syntaxe générale d’une requête MDX (forme de Backus-Naur) :

SELECT [<specification d’un axe>[, <spécification d’un axe>...]]FROM [<spécification


d’un cube>][WHERE [<spécification d’un filtre (slicer)>]]

Parenthèses en MDX :
{ } : Ensemble des éléments servant à la création d’une dimension du résultat de la
requête
( ) : Sélection de tuples dans la clause WHERE
[ ] : Représentation d’espaces, de caractères spéciaux et d‘interprétation non
numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec des caractères
« espace » , avec des chiffres, ou qui sont des mots-clés MDX, quand ils sont requis.

En MDX les mesures sont des éléments d’une dimension spéciale nommée « Measures » (ces
mesures peuvent être utilisées aussi dans les clauses WHERE et FROM).

La structure générale d’une requête MDX est la suivante :

SELECT axes1 ON COLUMNS, axes2 ON ROWS FROM cube WHERE<spécification


d’un filtre>
17
MONDRIAN/JPIVOT

Dans cette requête, la clause FROM spécifie la source de données. Ici c’est un ou plusieurs
cubes.

Si plusieurs cubes nécessaires, cela implique une jointure multidimensionnelle : chaque paire
de cubes doit alors posséder au moins une dimension concordante

La clause SELECT indique les résultats que l’on souhaite récupérer par la requête. Les
« axes » sont utilisés pour éviter toute confusion avec les dimensions du cube. ON
COLUMNS indique que la donnée doit être représentée suivante une colonne tandis que ON
ROWS indique que la donnée doit être représentée suivante une ligne. WHERE indique les
restrictions sur le ou les cubes de départ.

3. Quelques exemples de requêtes MDX


Exemple 1 : unités vendues "[Measures].[Unit Sales]" par an en 2012 et 2013 pour les
produits "Drink" et "Food"

SELECT

{ ([Measures].[Unit Sales], [Product].[Food]),


([Measures].[Unit Sales], [Product].[Drink]) } ON COLUMNS,
{ ([Time].[2012]), ([Time].[2013]) } ON ROWS
FROM [Sales]
Exemple 2 : Ventes de computer à AT&T pour les années 2012 et 2013 pour tous les
continents.

SELECT

{ Years.[2012], Years.[2013] } ON COLUMNS,


Regions.Continent.MEMBERS ON ROWS
FROM Sales
WHERE (Products.[Product Group].[Computers], Customers.[AT&T])
Exemple 3 : Unités de computer expédiées à AT&T pour les années 2012 et 2013 pour tous
les continents.
SELECT

{ Years.[2012], Years.[2013] } ON COLUMNS,


Regions.Continent.MEMBERS ON ROWS
FROM Sales
18
MONDRIAN/JPIVOT

WHERE (Products.[Product Group].[Computers],Customers.[AT&T],Measures.[Units] )

B. Usage de l’interface JPIVOT


L’interface de JPivot est composée d’une barre d’outils (figure 9) et d’une table.
L’ensemble des boutons de la barre d’outils permet de manipuler les données. Ils permettent
de gérer les dimensions du cube, l’affichage de la table JPivot, le mode de navigation, les
graphiques et l’impression/export.

Figure 9: JPivot - Barre de Menu de JPivot

Le premier bouton est le plus important : il permet l’exploration du cube en ajoutant/enlevant


des champs ou en filtrant. Le panel de la (figure 10) est divisé en trois sections permettant la
configuration d’affichage des dimensions en colonnes, en lignes et celles qui peuvent
éventuellement servir comme filtre. Un atout supplémentaire est le choix de l’ordre des
dimensions en utilisant les flèches. Il est possible aussi de filtre les valeurs qui vont être
affichées. Les valeurs peuvent elles aussi être triées.

 Test avec JPivot

Les requêtes que nous allons exécuter portent sur l’analyse du cube « Sales » de la datamart
« Foodmart ». Ce cube a été conçu pour l’analyse d’une chaine de magasins d’épicerie et leurs
promotions, clients et produits [1]. Les tables suivantes présentent les dimensions et mesures
associées à ce cube.

Tableau 1 : Différentes dimensionnions du cube « Sales » [1]

19
MONDRIAN/JPIVOT

Tableau 2 : différentes mesures du cube « Sales » [1]

20
MONDRIAN/JPIVOT

MDX QUERY USING JPIVOT


Example:
 Display all the measures for customers summarized at the state level

SELECT [Measures].MEMBERS ON COLUMNS,


NON EMPTY [Store].[Store state].MEMBERS ON ROWS
FROM [Sales]

 FILTER(set, search condition) function.


if we are only interested in stores whose 1997 unit sales exceed 1000

21
MONDRIAN/JPIVOT

 Calculated Members

Display the store sales, store cost and profit made by stores.
WITH MEMBER [Measures].[ProfitPercent] as '(([Measures].[Store Sales] -
[Measures].[Store Cost]) / [Measures].[Store Cost])', FORMAT_STRING = "#.00%"
SELECT {[Measures].[Store Sales], [Measures].[Store Cost], [Measures].[ProfitPercent]}
ON COLUMNS,
NON EMPTY [Store].[Store Name].Members ON ROWS
FROM [Sales]

22
MONDRIAN/JPIVOT

 Display the top Five Most sell products

23
MONDRIAN/JPIVOT

Conclusion
A priori, la performance du couple Mondrian/JPivot semble correcte. Au cours des
démonstrations réalisées, le serveur a tenu ses promesses en déployant rapidement des
tableaux croisés dans chacun des cubes. En ce qui concerne JPivot, l’interface, comme toute
interface web, perd en performance dès lors que le volume des données est trop grand, et ce
n’est non pas pour des questions de performance du serveur de Mondrian.

24
MONDRIAN/JPIVOT

Bibliographie :

 MEMOIRE : 2010.TH16559.van_damme.marie-dominique.pdf : thème :


Entrepôts de données dans le domaine spatial pour l’inventaire forestier.
 Conception-et-exploitation-dun-entrepot-de-donnee-au-sein-de-la-banque-
BADR
 Support de cours : OLAP.pdf : Bases de données multidimensionnelles
OLAP
 Support de cours : 7.2-MDX-OLAP-4p.pdf L’informatique des entrepôts
de données Daniel Lemire SEMAINE 12 Introduction a JPivot :

25

Vous aimerez peut-être aussi