Vous êtes sur la page 1sur 8

TP 1 SIAD : Projet dcisionnel sous Oracle

2me anne EPU Dpartement Informatique Tout d'abord, un petit tutorial sur les commandes que vous allez utiliser dans ce TP sur cette page http://www710.univ-lyon1.fr/~elghazel/Cours/SIAD/RAPPEL-SQL.pdf. Ce TP est rendre par mail votre enseignant de TP pour le 08/01/2012, 23h30 avec comme objet [TP2-SIAD-Nom_etudiant1-Nom_etudiant2] Rendu. Il faut rendre un rapport bien comment de chaque question ainsi que le fichier SQL. Ne pas oublier de mentionner les deux tudiants du binme dans le rapport.

I. Prambule
L'objectif de ce TP est de faire un tour d'horizon rapide de la problmatique de linformatique dcisionnelle (BI), en insistant particulirement sur la phase de modlisation dun Entrept de donnes (Data Warehouse), la phase dintgration et la phase de restitution (ici par des requtes, par de lanalyse ROLAP et par du Data Mining). Pour ce faire on partira d'une BD transactionnelle existante, et l'on tchera de modliser, d'alimenter et d'interroger un petit Data Warehouse.

II. Un avant got : Rappels SQL et requtes de classement sous Oracle


Avant de commencer la conception dun Data Warehouse, les questions suivantes servent vous rappeler quelques notions importantes des requtes SQL avances dont vous aurez besoin dans la suite de ce TP. Pour cela, sur les tables Emp et Dept cre partir du script "Exercice_1.sql" situ ladresse "http ://www710.univ-lyon1.fr/elghazel/Cours/SIAD/Exercice_1.sql".

a) Quel est le classement dcroissant des salaires des employs par dpartement
pour les dpartements 10 et 30 ?

Rsultat souhait

b) Idem en tant les trous dans le classement.

Rsultat souhait

H. Elghazel

TP1 SIAD

c) Quel est le classement dcroissant des salaires diffrents par dpartement pour
les dpartements 10 et 20 ?

Rsultat souhait

d) Quel est le salaire total vers par profession (rpondre avec deux mthodes
possibles avec et sans group by) ?

Rsultat souhait

e) Quel est la diffrence entre un group by et un partition by dans une requte


SQL?

f) Quel est le montant total des salaires verss par dpartement et job, par
dpartement, tout dpartement et job confondus ?

Rsultat souhait

g) Idem en tant toute confusion avec les valeurs nulles (rpondre avec deux
mthodes possibles).

Rsultat souhait

H. Elghazel

TP1 SIAD

II. Conception et alimentation dun entrept de donnes


II.1. Etat de lexistant: Une BD transactionnelle Soit un extrait d'une base de donnes transactionnelle servant la gestion de facture dans le cadre de la vente de produits alimentaires pour une enseigne donne. Analyser cette BD partir des donnes ci-dessous : Modle relationnel :
Client (Num, Nom, Prenom, Adresse, Date_nais, Sexe) Produit (Num, Designation, Stock) Prix_date (Num, Produit=>Produit, date, prix, remise) Facture (Num, Client=>Client, date_etabli) Ligne_facture (Facture=>Facture, Produit=>Produit, Qte, Id_prix=>Prix_date)

Il est noter que pour chacune des tables ci-dessus, la cl primaire est souligne et les cls trangres sont indiques par des flches de rfrencement. Ces diffrents tables sont implantes par le script "schema_relationnel.sql" situ ladresse "http://www710.univ-lyon1.fr/elghazel/Cours/SIAD/schema_relationnel.sql". Observer ce script, lanalyser et lexcuter pour gnrer la base. II.2. Modlisation Etat des besoins La premire tape pour lancer un projet dcisionnel est de faire linventaire des questions qui se trouvent sans rponse travers lensemble de lentreprise. En effet, il est frquent quun projet dcisionnel avec un primtre trs restreint, par exemple, uniquement pour la force de ventes, fonctionne bien dans un premier temps. Mais ses extensions nayant pas t prvues au dpart, plusieurs choix techniques bons pour un petit projet, savrent tre aujourdhui des handicapes majeurs lvolution du systme. En moyenne, le volume des donnes double tous les deux ans. On parle donc souvent de scalability , soit la capacit de monter en puissance dune plateforme dcisionnelle. Une bonne phrase pour synthtiser la mthodologie dun projet dcisionnel est : voir grand, mais commencer petit . Dans le cadre de ce projet, on cherche analyser les ventes effectues afin de les faire crotre. Les caractristiques intressantes des ventes sont les prix et les quantits. On s'intresse des critres gographiques (o sont les clients qui achtent) afin de cibler des campagnes promotionnelles. La prcision des analyses est variable, mais on notera que l'entreprise a la fois une vocation locale (chelle de la ville) et internationale (chelle du pays). On s'intresse des critres temporels (quand se passent les achats) afin d'aider l'organisation de l'entreprise (priode de vacances, embauches saisonnires supplmentaires, etc.). La prcision de ces critres est peu exprime, on cherchera adopter des critres classiques. Voici les principales questions auxquels nous essayons de rpondre, sachant que dans le cas d'un Data Warehouse, l'enjeu est de proposer des vues sur les donnes qui dpassent les simples questions formules, pour faire apparatre des relations non
H. Elghazel TP1 SIAD

encore envisages par les utilisateurs o Quels sont les produits les plus vendus, selon leurs dsignations et catgories ? o On s'intresse aux caractristiques des clients, pour analyser ce qu'ils achtent en fonction de leur ge, de leur groupe dge et de leur sexe o Quels sont les chiffres d'affaire en fonction des jours, semaines et anne (Quel est le chiffre d'affaire du jour 254, de la semaine 42 et de l'anne 2003) ? o Est ce qu'il existe une relation entre les chiffre d'affaire, les mois de l'anne et les sexes des acheteurs (par exemple est-ce que les femmes achtent plus en novembre) ? o Y a-t-il une relation entre le temps, lespace et la vente de produit ? o Quels sont les trois produits les plus vendus en gnral, et par catgorie ? o Combien se classerait dans le top des ventes toutes catgories confondues un produit vendu 50 exemplaires ? o Quels sont les produits qui contribuent moins de 0.05% du CA pour un Pays/une anne o donn(e)? o Est-ce que ces produits peuvent tre remiss? o Quels sont les produits qui sont achets ensemble ? Par exemple afin de les rendre plus proches sur le site de vente? o Quelle est la tendance des ventes pour lanne venir? o Est-ce que les remises font augmenter les ventes? o etc. Parmi lensemble des questions rcoltes, une premire slection devra spcifier quelles sont celles dont le ressort est bien de linformatique dcisionnelle. Dans notre cas, certains commerciaux souhaitaient savoir si une remise donne a t prise en compte dans la les dernires commandes de leurs clients. Cest une problmatique oprationnelle. Remarque : Nous avons ci-dessus une liste de questions non structures, mal poses, pas claires. Il serait un comble de les considrer comme un cahier des charges. Cest juste une petite liste de questions, ce nest pas un cahier des charges. La deuxime tape de notre projet dcisionnel est didentifier les sources dinformations, internes et externes lentreprise permettant de construire le Data Warehouse qui rpondra aux questions prcdemment souleves. Modlisation dimensionnelle Proposez un modle dimensionnel (schma en toile avec une table de fait et des tables de dimensions) de Data Warehouse capable de rpondre aux besoins des utilisateurs. Reprsenter, sur un diagramme conceptuel, les donnes de lentrept sous la forme du schma en toile propos. Enoncez les hirarchies pertinentes pour chaque dimension.

H. Elghazel

TP1 SIAD

II.3. Implmentation et alimentation Une fois la conception de votre entrept de donnes est chose faite, vous allez travailler maintenant sur lintgration des donnes des diffrentes sources dans votre entrept de donnes centralis, fonction permise par les outils dExtraction / Transformation / Loading (ETL). Lintgration est en fait un pr-traitement ayant pour but de faciliter laccs aux donnes centralises aux outils d'analyse et de restitution par la suite pour la prise de dcision. Ainsi l'intgration consiste concentrer les donnes collectes dans un espace unifi, dont le socle informatique essentiel est l'entrept de donnes. Ce dernier est llment central du dispositif dans le sens o il permet aux applications daide la dcision de bnficier d'une source d'information homogne, commune et fiable. Cette centralisation permet surtout de sabstraire de la diversit des sources de donnes. Lors de cette tape les donnes sont transformes et filtres en vue du maintien de la cohrence d'ensemble. Enfin, c'est aussi durant cette tape que sont effectus les ventuels calculs communs l'ensemble du systme dinformation dcisionnel (SID). Sur le plan conceptuel, un entrept de donnes (fait et dimensions) peut tre vu comme un ensemble des vues matrialises provenant d'un ensemble des sources sous-jacentes. De ce fait, les changements au niveau des sources doivent tre rpercuts priodiquement au niveau de l'entrept. La maintenance de l'entrept entrane donc la consultation des sources sous-jacentes. La priodicit de mise jour des vues matrialises est fonction des besoins des donnes sur le serveur ddi lanalyse. Dans ce projet et pour mieux comprendre les fonctionnalits du processus ETL, vous nallez pas utiliser des outils ddis pour a mais vous allez plutt dvelopper votre propre script SQL pour y parvenir. La solution ETL dvelopper dans ce projet consiste donc utiliser la technique des vues matrialises sous oracle. Indications Les lments suivants peuvent vous aider limplmentation du processus ETL : o La dsignation dun produit comporte son nom, sa catgorie suivie de sa souscatgorie spares les 3 par des ".". Si la sous-catgorie est absente, il faut la mettre NULL dans lentrept. o Ladresse dun client comporte son pays, son code postal et sa ville. Les deux premires lettres du code postal donnent la dpartement. o La fonction substr(X, A, B) renvoie les B caractres partir du caractre A dans la chane X. o La fonction instr( chane, sous-chane [,dbut [,nombre occurrences]]) recherche la position d'une sous-chane dans une chane. (Plus de dtails dans le tutorial joint ce TP) o Pour la gestion des dates, utilisez les fonctions to_date et to_number. o La requte suivante permet de crer une liste de dates entre date_a et date_b

H. Elghazel

TP1 SIAD

select level + date_a- 1 as date from dual connect by level < (date_b date_a + 2)

o Pour le calcul du groupe dge pour chaque client utilisez le format suivant : Si lge est infrieur 30 il crit la chaine de caractre <30 ans . Si lge est comprit entre 30 et 45 il crit la chaine de caractre 30-45 ans . Si lge est comprit entre 45 et 60 il crit la chaine de caractre 46-60 ans . Sinon, il crit la chaine de caractre >60 ans . La structure de contrle case whenthenend dans le select de votre requte peut faire laffaire. Questions 1. Ecrivez les requtes SQL (de cration de vues matrialises) permettant le transfert/transformation des donnes depuis la base transactionnelle vers le Data Warehouse. Pour la mise jour des vues matrialises partir des sources, il faut utiliser une mthode rapide (refresh fast) avec un rafraichissement la demande (on demand) que lingnieur dcisionnel excutera chaque soir pour lancer les mises jour. 2. Crez si ncessaire les diffrentes cls primaires et trangres pour les diffrentes vues. 3. Vrifiez les mises jour des vues matrialises travers quelques insertions de nouveaux tuples dans les diffrentes sources. 4. Pour chacune des vues prcdentes, crez les index ncessaires pour une meilleure optimisation des requtes danalyse par la suite. (Pour un petit rappel sur les index sous oracle vous pouvez consulter le lien suivant : http://jpg.developpez.com/oracle/tuning/#LIV). 5. Oracle permet de dclarer les dimensions, ainsi que leurs hirarchies. Les dimensions sont optionnelles mais hautement recommandes du fait quelles constituent des informations sur les hirarchies qui permettront ultrieurement au moteur d'Oracle d'optimiser les requtes dimensionnelles (de type rollup par exemple) et quelles peuvent aussi tre utilises par les outils OLAP. On utilise la syntaxe ci-dessous pour les dclarer.

H. Elghazel

TP1 SIAD

III. Restitution sous oracle


III.1. Approche ROLAP pour linterrogation des entrepts de donnes sous Oracle Dans le monde de l'informatique dcisionnelle, le ROLAP (Relational On-Line Analytical Processing) est une solution danalyse OLAP qui voit un entrept de donnes comme un SGBD relationnel et qui permet de linterroger en utilisant des requtes SQL tendu (en gnral trs complexes et trs exigeantes en terme de ressources et de temps dexcution). Une requte ROLAP est en gnral exprime comme suit. On calcule le joint de la table des faits et des relations dimensionnelles. On slectionne des tuples en fonctions des donnes dimensionnelles. On groupe ces donnes suivant certaines dimensions. On calcule une valeur agrge (le plus souvent une somme). Ce type de requtes est dcrit davantage dans le tutorial joint ce TP. Rpondre aux questions suivantes en interrogeant votre entrept de donnes par des requtes : 1. Donnez la moyenne des ventes par anne, pays (du client), catgorie (du produit), par anne, pays et par anne, pour les annes 2005 et 2006. 2. Donnez la moyenne des ventes par anne, groupe dge du client, ge du client, par anne, groupe dge et par anne, pour les annes 2006 et 2007. 3. Quel est le produit le plus vendu par anne et par catgorie? 4. Quel est le produit le plus vendu par sexe du client et par trimestre? 5. Donnez le total des ventes par anne, catgorie puis par anne. On ne veut pas le rsultat pour le total sur toutes les annes (utiliser la fonction GROUPING_ID). 6. Donnez tous les totaux de ventes par anne selon la dimension catgorie, ainsi que selon la dimension nom du client. Utilisez la commande GROUPING_SETS. 7. Donnez la requte permettant de calculer lhypercube du chiffre daffaire sur les dimensions temps, adresse et produit tout en considrant les diffrentes hirarchies pour chaque dimension. 8. Quel est le meilleur mois de vente du produit "Sirop d rable" pour chacune des annes ? 9. Quelle est la quantit de produits vendus pour chaque catgorie, les 5 premiers jours de chaque mois de 2006 ? 10. Quelle est la rpartition par tiers des catgories selon leurs quantits totales vendues en 2006 (cf NTILE) ? III.2. Fouille de donnes (Data Mining) sous Oracle pour la recherche de motifs frquents et les rgles dassociation Nous allons chercher dceler dans cette partie des comportements dachats des clients. Pour cela, nous allons construire une base de donnes de transactions, sur le modle ID, ARTICLE o ID est lidentiant dune transaction, et ARTICLE est le nom dun produit. 1. Faire les requtes pour construire une telle table, quon appellera
H. Elghazel TP1 SIAD

TRANSACTIONS. Deux articles sont dans la mme transaction sils sont achets par le mme client, nimporte quelle date. 2. Rechercher les motifs frquents dans cette table en utilisant une fonction fournie par Oracle. Faire varier le support, la taille des motifs en sortie, pour dceler des ensembles frquents intressants. Pour cela, il est fortement conseill d'utiliser l'aide en ligne d'Oracle (http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_frqist. htm) et comprendre lexemple prsent sur ce lien pour la fonction FI_TRANSACTIONAL. 3. Donner les motifs les plus frquents par taille. 4. Essayer dextraire des rgles dassociation. Pour cela, il est fortement conseill d'utiliser l'aide en ligne d'Oracle (http://download.oracle.com/docs/cd/B12037_01/appdev.101/b10802/d_datmin. htm), aller la fonction "GET_ASSOCIATION_RULES Function" et comprendre lexemple prsent.

H. Elghazel

TP1 SIAD

Vous aimerez peut-être aussi