Partie a : Installation de l’architecture logicielle








télécharger 116.89 Kb.
titrePartie a : Installation de l’architecture logicielle
date de publication08.07.2017
taille116.89 Kb.
typeDocumentos
ar.21-bal.com > droit > Documentos



Département Informatique

5° année – Semestre 9

Option  INSI (Ingénierie des Systèmes d’Information)



Travail Pratique

associé au cours

« Entrepôts de données »
Bernard ESPINASSE

2015-2016

Cahier de rendu

Date du TP : …………………………

Promotion : ……………………………

Equipe : ………………………………..

Membres de l’Equipe :

……………………….……

……………………….……

……………………….……

……………………….……

Sommaire


PARTIE A : Installation de l’architecture logicielle 2

A1. Installation du serveur Postgresql 2

A2. Création de la base de données de l’entrepôt sous Postgresql 2

A3. Installation de JRUBIK/MONDRIAN 2

PARTIE B : Modélisation multidimensionnelle 3

B.1 – Création d’un schéma de cube MONDRIAN en XML 3

B.2 – Analyse du cube « Vente » utilisé pour les requêtes MDX 5

PARTIE C : Requêtes MDX sur le cube « Vente » 8

C.1 - Requêtes MDX simples 8

C.2 - Requêtes avec usage de fonctions 8

C.3 - Requêtes MDX avec usage de Sets et Members 11

C.4 - Requêtes MDX complexes 16


PARTIE A : Installation de l’architecture logicielle

A1. Installation du serveur Postgresql



Le télécharger à l’adresse :

http://www.postgresql.org/download/
Télécharger aussi le programme d’administration de PostGreSQL : pgadmin3

Il existe aussi un programme d’administration : phppgadmin à lancer sur un navigateur.
Il vous est recommandé de définir un utilisateur administrateur de base de donnée pour l’équipe.

A2. Création de la base de données de l’entrepôt sous Postgresql


Le script de création de la base de données de l’entrepôt « Polytech’Market » (esql_create.sql), le script de remplissage de cette base (esql_add.sql), le script de suppression de la base (esql_del.sql),, sont sur la page Web du cours.
Seul l’utilisateur administrateur peut créer la base de données.
Vous devez lancer ces scripts à partir d’une fenêtre d’un des deux logiciels d’administration de Postgresql (pgadmin3 ou phppgadmin).
Une fois la base de données créée, l’utilisateur administrateur peut attribuer des droits aux autres utilisateurs de son équipe (usage de pgadmin3 ou phppgadmin).

A3. Installation de JRUBIK/MONDRIAN



Le télécharger ou sur la page Web du cours ou à l’adresse :

http://rubik.sourceforge.net/jrubik/intro.html
JRUBIK doit contenir la bibliothèque MONDRIAN. Installer JRUBIK selon la procédure spécifiée sur le site (attention au prérequis).
Cette installation doit installer en même temps MONDRIAN.

PARTIE B : Modélisation multidimensionnelle


Cette partie a pour objectif de comprendre la modélisation multidimensionnelle et spécifier des structures multidimensionnelles dont des cubes MONDRIAN en langage XML.

B.1 – Création d’un schéma de cube MONDRIAN en XML


On vous demande d’élaborer un schéma d’un cube MONDRIAN « Stocks » en XML permettant d’analyser les stocks. Vous utiliserez pour cela un éditeur XML de votre choix.


  1. Déterminez quelle table peut être utilisée comme table des faits pour ces analyses, sachant que les mesures à étudier seront : le nombre de produits commandés, le nombre de produits livrés, les prix d’achat et de vente par lots des produits.

Réponse :

  1. Déterminez quelles tables de dimensions seront utilisées pour ces analyses sachant que l’on souhaite une analyse par produit (et type de produits), date et entrepôt de stockage (et type d’entrepôt de stockage).

Réponse :

  1. On souhaite maintenant créer un cube utilisant ces tables. Elaborez le schéma de ce cube sachant que :

    • Les mesures à ajouter sont : « nombre de produits différents commandés », « total des produits commandés », « nombre de produits livrés », « ventes de l’entrepôt », « coût d’entreposage », « bénéfice de l’entrepôt » (ventes-coûts), « perte de produits » (produit commandés – produits livrés).

    • La précision choisie est de 2 chiffres après la virgule.

Définir la partie du schéma associée à la définition de ces mesures.

Réponse :


  1. La dimension « Produit » utilise les tables Produit et Type_Produits. Les niveaux « levels » pour cette dimension sont : All, Produit_family, Produit_department, Produit_category, Produit_subcategory, Brand_name et Produit_name. 

Définir la partie du schéma associée à cette dimension « Produit ».

Réponse :



  1. La dimension « Temps » utilise un seul tableau « Temps_by_day ». Les niveaux pour cette dimensions sont : Year, Trimestre, Month.

Définir la partie du schéma associée à cette dimension « Temps ».

Réponse :

Vous collerez à cet emplacement le code XML du schéma du cube MONDRIAN « Stock ».

B.2 – Analyse du cube « Vente » utilisé pour les requêtes MDX


Soit le cube « Vente » suivant  défini sur la base d’entrepôt « Polytech’Market »:
"Polytech_market"
> "Produit">

"defaultHiera" hasAll="true" allMemberName="All Produit"

primaryKey="produits_id" primaryKeyTable="produits">

"type_produits_id" rightKey="type_produits_id">

"type_produits" schema="public" />

"produits" schema="public" />

"product_family" table="type_produits" column="product_family"

uniqueMembers="false"/>

"product_department" table="type_produits"

column="product_department"

uniqueMembers="false"/>

"product_category" table="type_produits" column="product_category"

uniqueMembers="false"/>

"product_subcategory" table="type_produits"

column="product_subcategory"

uniqueMembers="false"/>

"brand_name" table="produits" column="brand_name"

uniqueMembers="false"/>

"product_name" table="produits" column="product_name"

uniqueMembers="false"/>





"Temps">

"defaultHiera" hasAll="true" allMemberName="All Temps"

primaryKey="temps_id">

"temps" schema="public" />

"l_annee" table="temps" column="l_annee" uniqueMembers="false"/>

"trimestre" table="temps" column="trimestre" uniqueMembers="false"/>

"mois" table="temps" column="mois" uniqueMembers="false"/>





"Client">

"defaultHiera" hasAll="true" allMemberName="All client"

primaryKey="client_id">

"client" schema="public" />

"marital_status" table="client" column="marital_status"

uniqueMembers="false"/>

"fullname" table="client" column="fullname" uniqueMembers="false"/>





"Magasin">

"defaultHiera" hasAll="true" allMemberName="All Magasin"

primaryKey="magasin_id">

"magasin" schema="public" />

"store_country" table="magasin" column="store_country"

uniqueMembers="false"/>

"store_state" table="magasin" column="store_state"

uniqueMembers="false"/>

"store_city" table="magasin" column="store_city"

uniqueMembers="false"/>

"store_name" table="magasin" column="store_name"

uniqueMembers="false">


"store_sqft" column="store_sqft"/>








"Gender">

"defaultHiera" hasAll="true" allMemberName="All Gender"

primaryKey="client_id">

"client" schema="public" />

"gender" table="client" column="gender" uniqueMembers="false"/>

"fullname" table="client" column="fullname" uniqueMembers="false"/>





"Vente">

"ventes" schema="public" />

"Produit" source="Produit" foreignKey="produit_id"/>

"Temps" source="Temps" foreignKey="temps_id"/>

"Client" source="Client" foreignKey="client_id"/>

"Magasin" source="Magasin" foreignKey="magasin_id"/>

"Gender" source="Gender" foreignKey="client_id"/>

"nb ventes" column="produit_id" aggregator="count"

formatString="#,###"/>

"nb transactions" column="unit_sales" aggregator="sum"

formatString="Standard"/>

"prix de vente" column="store_sales" aggregator="sum"

formatString="Standard"/>

"prix achat" column="store_cost" aggregator="sum"

formatString="Standard"/>

"nb clients" column="client_id" aggregator="distinct-count"

formatString="Standard"/>

"Profit" dimension="Measures"

formula="[Measures].[prix de vente] - [Measures].[prix achat]">



"Profit past" dimension="Measures"

formula="CoalesceEmpty(([Measures].[Profit],[Temps].PREVMEMBER),

[Measures].[Profit])">






On vous demande de donner pour ce cube « Sales » :

  1. les tables de la base « Polytech’market » concernées par le cube

Réponse :

  1. les dimensions de ce cube avec leur(s) hiérarchie(s)

Réponse :

  1. les membres impliqués dans ce cube

Réponse :

  1. les mesures impliquées dans ce cube

Réponse :

PARTIE C : Requêtes MDX sur le cube « Vente »


Cette partie a pour objectif d’écrire des requêtes OLAP en langage MDX en utilisant l’outil logiciel JRUBIK, requêtes sur le cube « Ventes » de la base « Polytech’market » donné en partie A-2.

C.1 - Requêtes MDX simples


  1. Afficher pour tous les magasins « Magasin » les mesures suivantes : Nb ventes, Magasin Cost, Magasin Vente, Vente Count et Nombre de clients.

Réponse :
Vous “collerez” ici le code MDX généré par JRubik.


  1. Afficher le nombre de clients des magasins qui se trouvent aux USA.

Réponse :
Vous “collerez” ici le code MDX généré par JRubik.


  1. Modifier la requête précédente pour afficher le nombre de clients des magasins qui se trouvent à Seattle dans l’état de Washington (WA) aux USA.

Réponse :
Vous “collerez” ici le code MDX généré par JRubik.


  1. Modifier la requête précédente pour afficher le nombre de clients des magasins en fonction des villes qui se trouvent dans l’état de Washington (WA) aux USA.

Recommandation : Vous pouvez utiliser la fonction « Descendant » (voir l’annexe).

Réponse :
Vous “collerez” ici le code MDX généré par JRubik.


C.2 - Requêtes avec usage de fonctions


  1. Afficher toutes les mesures calculées et non calculées (ex : “Profit Last Period”) des magasins de l’état de Californie (CA) et de chaque magasin des villes de cet état.

Recommendation : utiliser la fonction « AddCalculateMembers » (Voir l’annexe)

Reponse :
Vous “collerez” ici le code MDX généré par JRubik.


  1. Déterminer les tops 10 des catégories de produits vendus.

Recommendation : Voir l’utilisation de la fonction TopCount dans l’annexe.

Réponse :

Vous “collerez” ici le code MDX généré par JRubik.



  1. Déterminer les marques qui constituent 70 % des ventes.

Recommendation : Utiliser la fonction TopPercent (voir l’annexe) ;

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :



Remarque : Les Produit sont redondantes mais les marques (sous hierarchies) sont différentes. Ex : Hermanos (bier) et Hermanos (vin)

  1. Déterminer les marques qui composent la tranche inférieure des 20 % des ventes.

Recommendation : vous pouvez utiliser la fonction BottomPercent (voir l’annexe)

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :



  1. Déterminer les tops 5 clients dans les top 5 magasins

Recommendation : Utiliser les fonctions Generate, TopCount (voir annexe)

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :


C.3 - Requêtes MDX avec usage de Sets et Members


  1. Déterminer les marques vendues au cours des 3 derniers trimestres.

Recommendation : vous pouvez utiliser les fonctions suivantes : Filter, IsEmpty, Tail, Union, Descendants (Voir annexe).

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :



  1. Déterminer les tendances récentes des meilleures marques les plus vendues.

Recommendation :

    1. Déclarer un ensemble « SET » qui va contenir les 10 TOP Marque vendues

    2. Déclarer un ensemble « SET » qui va contenir le dernier mois.

    3. Déclarer un ensemble qui va contenir les derniers six mois. (en utilisant la fonction Lag appliquer sur l’ensemble dernier mois)

    4. Fonctions à utiliser : Lag, TopCount, ... (Voir l’annexe)

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :




  1. Détermination des ventes qui dépassent les coûts du magasin de 155 %.

Recommendation :

    1. Définir un membre calculé en utilisant WITH MEMBER qui correspond à : (MagasinVente – MagasinCost)/MagasinCost.

    2. Vous pouvez utiliser la fonction Filter (voir annexe).

Reponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :



  1. Déterminer les Tops 10 et les 10 dernières marques de produit.

Recommendation :

    1. Définir un SET qui contient les marques triées (par la fonction Order).

    2. Utiliser les fonctions suivantes : Order, Rank, Head, Tail, Union, … (voir l’annexe).

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :




  1. Ecrire une requête qui affiche les familles de produits (Produit Family) sur les lignes, et les ventes des magasins [Magasin Vente] et pourcentage de la contribution totale [Percent of total] (pour stocker les ventes) sur les colonnes.

Recommendation :

    1. Définir un nouveau membre calculée qui va correspondre à la contribution totale (([Measures].[Magasin Vente], [Produit].CurrentMember) / ([Measures].[Magasin Vente], [Produit].[All Produits]))

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :




  1. Ecrire une requête MDX qui affiche uniquement les catégories de produits qui contiennent des produits qui sont dans le top cinq en fonction des ventes en magasin sur les lignes. Sur les colonnes, afficher uniquement les stocks des ventes.

Recommendation :

    1. Déclarer un SET avec les top des produits, et un SET avec les top des catégorie.

    2. Vous pouvez utiliser les fonctions Ancestor, Generate et TopCount (voir annexe).

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :





  1. Ecrire la requête qui affiche les 5 plus importants produits dans chaque département.

Recommendation : vous pouvez utiliser les fonctions Generate et TopCount (voir l’annexe).

Réponse :

Vous “collerez” ici le code MDX généré par JRubik, et le résultat obtenu.

Résultat :



C.4 - Requêtes MDX complexes


Pour les requêtes de ce groupe, on vous demande, en quelques lignes :

    1. d’expliquer l’analyse que permet de faire la requête

    2. de décrire les dimensions, membres, mesures, … traités par la requête

    3. d’expliquer les opérations réalisées par la requête sur le cube Sales (dimensions, mesures, …)



  1. Requête utilisant la fonction Hierarchize, Union, CrossJoin (Voir annexe)

Soit la requête MDX:

SELECT

Hierarchize(Union(Union(Crossjoin({[client].[All client]},

{[Gender].[All Gender]}), Crossjoin({[client].[All client]},

[Gender].[All Gender].Children)),

Union(Crossjoin([client].[All client].Children, {[Gender].[All Gender]}),

Crossjoin([client].[All client].Children, [Gender].[All Gender].Children))))

ON COLUMNS,

{[Measures].[Nb ventes]} ON ROWS

FROM [Vente]

Le résultat obtenu :



Remarque : Modifier req21.jpng

Que fait cette requête ?

Réponse :

  1. Requête avec définition de Set

Soit la requête MDX:

WITH SET [Months] AS 'Except(Descendants([Temps].[1998],

[Temps].[mois]),

{[Temps].[1998].[Q1].[01_Janvier],

[Temps].[1998].[Q4].[12_Decembre]})'

member [Measures].[Growth] AS '((([Temps].CurrentMember,

[Measures].[prix de vente]) - ([Temps].PrevMember,

[Measures].[prix de vente])) / ([Temps].PrevMember,

[Measures].[prix de vente]))', FORMAT_STRING = "#.00%"

MEMBER [Measures].[Avg Growth] as 'Avg([Months],

[Measures].[Growth])', FORMAT_STRING = "#.00%"

SELECT

{[Measures].[Avg Growth]} ON COLUMNS,

Order([Produit].[product_category].Members, [Measures].[Avg Growth],

BDESC) ON ROWS

FROM [Vente]

Le résultat obtenu :



Que fait cette requête ?

Réponse :

  1. Requête avec IIF

Soit la requête MDX:

WITH MEMBER [Measures].[StoreSqftVal] AS

'([Magasin].CurrentMember.Properties("Store_Sqft"))'

MEMBER [Measures].[StoreSqft] AS

'IIf(([Magasin].CurrentMember.Level.Name = "Store_name"),

[Measures].[StoreSqftVal],

Sum(Descendants([Magasin].CurrentMember,

[Magasin].[Store_Name]), [Measures].[StoreSqftVal]))'

SELECT

{[Measures].[StoreSqft]} ON COLUMNS,

Filter(Descendants([Magasin].[All Magasin], [Magasin].[Store_State]),

([Measures].[StoreSqft] > 0.0)) ON ROWS

FROM [Vente]

Le résultat obtenu :



Que fait cette requête ?

Réponse :

  1. Requête avec filtre

Soit la requête MDX:

WITH SET [Recent Months] AS

'Filter([Temps.defaultHiera].[mois].Members,

(NOT IsEmpty([Temps].CurrentMember)))'

SET [Recent Month] AS

'{[Recent Months].Item((Count([Recent Months]) - 1.0))}'

SELECT

{[Recent Month],

[Recent Month].Item(0.0).Lag(1.0),

[Recent Month].Item(0.0).Lag(2.0)}

ON COLUMNS,

{[Magasin.defaultHiera].[All Magasin].[USA].Children}

ON ROWS

FROM [Vente]

Le résultat obtenu :



Que fait cette requête ?

Réponse :


similaire:

Partie a : Installation de l’architecture logicielle iconWine, une couche logicielle de compatibilité qui permet l'installation...

Partie a : Installation de l’architecture logicielle iconIngénieur en Architecture Logicielle

Partie a : Installation de l’architecture logicielle iconArchitecture logicielle [texte imprimé] : pour une approche organisationnelle,...

Partie a : Installation de l’architecture logicielle iconIncitation : Créer un volume (sculpture, élément d’architecture, installation…) qui
«Créer un volume (sculpture, élément d’architecture, installation…) qui interrogera un lieu du collège.»

Partie a : Installation de l’architecture logicielle iconCe document servira de référence tout au long du développement du...

Partie a : Installation de l’architecture logicielle iconMicrosoft Volta Partie 1 : Installation et découverte

Partie a : Installation de l’architecture logicielle iconConforme à la systématique pour C. d. Ch. Neutre partie 4 techniques...

Partie a : Installation de l’architecture logicielle iconConforme à la systématique pour C. d. Ch. Neutre partie 4 techniques...

Partie a : Installation de l’architecture logicielle iconGeorg Friedrich Wilhelm hegel (1770-1831)
«De l’idée du beau dans l’art ou de l’idéal»), la deuxième partie («Développement de l’idéal»), ainsi que les deux premières sections...

Partie a : Installation de l’architecture logicielle iconArchitecture pour l'accueil du site de suivi de Compte-Rendus et...








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com