Vous êtes sur la page 1sur 8

TP 1 SIAD : Projet décisionnel sous Oracle

2ème année EPU Département 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 binôme dans le rapport.

I. Préambule
L'objectif de ce TP est de faire un tour d'horizon rapide de la problématique de l’informatique décisionnelle (BI), en insistant particulièrement sur la phase de modélisation d’un Entrepôt de données (Data Warehouse), la phase d’intégration et la phase de restitution (ici par des requêtes, par de l’analyse ROLAP et par du Data Mining). Pour ce faire on partira d'une BD transactionnelle existante, et l'on tâchera de modéliser, d'alimenter et d'interroger un petit Data Warehouse.

II. Un avant goût : Rappels SQL et requêtes de classement sous Oracle
Avant de commencer la conception d’un Data Warehouse, les questions suivantes servent à vous rappeler quelques notions importantes des requêtes SQL avancées dont vous aurez besoin dans la suite de ce TP. Pour cela, sur les tables Emp et Dept créée à partir du script "Exercice_1.sql" situé à l’adresse "http ://www710.univ-lyon1.fr/˜elghazel/Cours/SIAD/Exercice_1.sql".

a) Quel est le classement décroissant des salaires des employés par département
pour les départements 10 et 30 ?

Résultat souhaité

b) Idem en ôtant les trous dans le classement.

Résultat souhaité

 

H. Elghazel

TP1 SIAD

Résultat souhaité   H. tout département et job confondus ? Résultat souhaité g) Idem en ôtant toute confusion avec les valeurs nulles (répondre avec deux méthodes possibles). par département. Elghazel TP1 SIAD .c) Quel est le classement décroissant des salaires différents par département pour les départements 10 et 20 ? Résultat souhaité d) Quel est le salaire total versé par profession (répondre avec deux méthodes possibles avec et sans group by) ? Résultat souhaité e) Quel est la différence entre un group by et un partition by dans une requête SQL? f) Quel est le montant total des salaires versés par département et job.

Nom. la clé primaire est soulignée et les clés étrangères sont indiquées par des flèches de référencement. le volume des données double tous les deux ans. Mais ses extensions n’ayant pas été prévues au départ. Dans le cadre de ce projet. Conception et alimentation d’un entrepôt de données II. Analyser cette BD à partir des données ci-dessous : Modèle relationnel : Client (Num.fr/˜elghazel/Cours/SIAD/schema_relationnel. Client=>Client. prix. Etat de l’existant: Une BD transactionnelle Soit un extrait d'une base de données transactionnelle servant à la gestion de facture dans le cadre de la vente de produits alimentaires pour une enseigne donnée.). plusieurs choix techniques bons pour un petit projet.sql". Modélisation Etat des besoins La première étape pour lancer un projet décisionnel est de faire l’inventaire des questions qui se trouvent sans réponse à travers l’ensemble de l’entreprise. Stock) Prix_date (Num. Sexe) Produit (Num. Adresse. remise) Facture (Num. fonctionne bien dans un premier temps. etc. embauches saisonnières supplémentaires. II. Qte. Prenom. l’analyser et l’exécuter pour générer la base. Produit=>Produit. l'enjeu est de proposer des vues sur les données qui dépassent les simples questions formulées. uniquement pour la force de ventes. Date_nais. La précision de ces critères est peu exprimée.sql" situé à l’adresse "http://www710. s’avèrent être aujourd’hui des handicapes majeurs à l’évolution du système. soit la capacité de monter en puissance d’une plateforme décisionnelle. pour faire apparaître des relations non H. on cherche à analyser les ventes effectuées afin de les faire croître. par exemple. Ces différents tables sont implantées par le script "schema_relationnel. date_etabli) Ligne_facture (Facture=>Facture. mais commencer petit ». Voici les principales questions auxquels nous essayons de répondre. En moyenne.2. On s'intéresse à des critères temporels (quand se passent les achats) afin d'aider à l'organisation de l'entreprise (période de vacances. sachant que dans le cas d'un Data Warehouse. La précision des analyses est variable. Designation. il est fréquent qu’un projet décisionnel avec un périmètre très restreint. Les caractéristiques intéressantes des ventes sont les prix et les quantités. Elghazel TP1 SIAD   . mais on notera que l'entreprise a à la fois une vocation locale (échelle de la ville) et internationale (échelle du pays). En effet. Produit=>Produit.univ-lyon1.II. Id_prix=>Prix_date) Il est à noter que pour chacune des tables ci-dessus. On parle donc souvent de «scalability ». On s'intéresse à des critères géographiques (où sont les clients qui achètent) afin de cibler des campagnes promotionnelles. Une bonne phrase pour synthétiser la méthodologie d’un projet décisionnel est : « voir grand.1. date. on cherchera à adopter des critères classiques. Observer ce script.

pas claires. de leur groupe d’âge et de leur sexe o Quels sont les chiffres d'affaire en fonction des jours. une première sélection devra spécifier quelles sont celles dont le ressort est bien de l’informatique décisionnelle. C’est une problématique opérationnelle. Remarque : Nous avons ci-dessus une liste de questions non structurées. Dans notre cas. selon leurs désignations et catégories ? o On s'intéresse aux caractéristiques des clients.   H. de la semaine 42 et de l'année 2003) ? o Est ce qu'il existe une relation entre les chiffre d'affaire. Parmi l’ensemble des questions récoltées. internes et externes à l’entreprise permettant de construire le Data Warehouse qui répondra aux questions précédemment soulevées. Modélisation dimensionnelle Proposez un modèle dimensionnel (schéma en étoile avec une table de fait et des tables de dimensions) de Data Warehouse capable de répondre aux besoins des utilisateurs.encore envisagées par les utilisateurs o Quels sont les produits les plus vendus. ce n’est pas un cahier des charges. sur un diagramme conceptuel. La deuxième étape de notre projet décisionnel est d’identifier les sources d’informations. et par catégorie ? o Combien se classerait dans le top des ventes toutes catégories confondues un produit vendu à 50 exemplaires ? o Quels sont les produits qui contribuent à moins de 0. Enoncez les hiérarchies pertinentes pour chaque dimension. semaines et année (Quel est le chiffre d'affaire du jour 254. mal posées. l’espace et la vente de produit ? o Quels sont les trois produits les plus vendus en général. Représenter. C’est juste une petite liste de questions. Il serait un comble de les considérer comme un cahier des charges. les données de l’entrepôt sous la forme du schéma en étoile proposé. les mois de l'année et les sexes des acheteurs (par exemple est-ce que les femmes achètent plus en novembre) ? o Y a-t-il une relation entre le temps. certains commerciaux souhaitaient savoir si une remise donnée a été prise en compte dans la les dernières commandes de leurs clients. pour analyser ce qu'ils achètent en fonction de leur âge.05% du CA pour un Pays/une année o donné(e)? o Est-ce que ces produits peuvent être remisés? o Quels sont les produits qui sont achetés ensemble ? Par exemple afin de les rendre plus proches sur le site de vente? o Quelle est la tendance des ventes pour l’année à venir? o Est-ce que les remises font augmenter les ventes? o etc. Elghazel TP1 SIAD .

nombre occurrences]]) recherche la position d'une sous-chaîne dans une chaîne. les changements au niveau des sources doivent être répercutés périodiquement au niveau de l'entrepôt. De ce fait. o La fonction instr( chaîne. Cette centralisation permet surtout de s’abstraire de la diversité des sources de données. Sur le plan conceptuel. A.début [. Dans ce projet et pour mieux comprendre les fonctionnalités du processus ETL. utilisez les fonctions to_date et to_number.". (Plus de détails dans le tutorial joint à ce TP) o Pour la gestion des dates. Implémentation et alimentation Une fois la conception de votre entrepôt de données est chose faite. commune et fiable. L’intégration est en fait un pré-traitement ayant pour but de faciliter l’accès aux données centralisées aux outils d'analyse et de restitution par la suite pour la prise de décision. Enfin. sous-chaîne [. il faut la mettre à NULL dans l’entrepôt. Elghazel TP1 SIAD . c'est aussi durant cette étape que sont effectués les éventuels calculs communs à l'ensemble du système d’information décisionnel (SID). Indications Les éléments suivants peuvent vous aider à l’implémentation du processus ETL : o La désignation d’un produit comporte son nom. Ainsi l'intégration consiste à concentrer les données collectées dans un espace unifié. La maintenance de l'entrepôt entraîne donc la consultation des sources sous-jacentes. o La requête suivante permet de créer une liste de dates entre date_a et date_b   H. dont le socle informatique essentiel est l'entrepôt de données. Les deux premières lettres du code postal donnent la département.3. sa catégorie suivie de sa souscatégorie séparées les 3 par des ". La périodicité de mise à jour des vues matérialisées est fonction des besoins des données sur le serveur dédié à l’analyse. o La fonction substr(X. son code postal et sa ville. o L’adresse d’un client comporte son pays. vous n’allez pas utiliser des outils dédiés pour ça mais vous allez plutôt développer votre propre script SQL pour y parvenir. La solution ETL à développer dans ce projet consiste donc à utiliser la technique des vues matérialisées sous oracle. fonction permise par les outils d’Extraction / Transformation / Loading (ETL).II. Si la sous-catégorie est absente. Lors de cette étape les données sont transformées et filtrées en vue du maintien de la cohérence d'ensemble. vous allez travailler maintenant sur l’intégration des données des différentes sources dans votre entrepôt de données centralisé. Ce dernier est l’élément central du dispositif dans le sens où il permet aux applications d’aide à la décision de bénéficier d'une source d'information homogène. un entrepôt de données (fait et dimensions) peut être vu comme un ensemble des vues matérialisées provenant d'un ensemble des sources sous-jacentes. B) renvoie les B caractères à partir du caractère A dans la chaîne X.

On utilise la syntaxe ci-dessous pour les déclarer. Questions 1. Les dimensions sont optionnelles mais hautement recommandées du fait qu’elles constituent des informations sur les hiérarchies qui permettront ultérieurement au moteur d'Oracle d'optimiser les requêtes dimensionnelles (de type rollup par exemple) et qu’elles peuvent aussi être utilisées par les outils OLAP. Pour la mise à jour des vues matérialisées à partir des sources. il faut utiliser une méthode rapide (refresh fast) avec un rafraichissement à la demande (on demand) que l’ingénieur décisionnel exécutera chaque soir pour lancer les mises à jour. Créez si nécessaire les différentes clés primaires et étrangères pour les différentes vues. Sinon. Elghazel TP1 SIAD . 4.com/oracle/tuning/#LIV). il écrit la chaine de caractère « >60 ans ».1 as date from dual connect by level < (date_b – date_a + 2) o Pour le calcul du groupe d’âge pour chaque client utilisez le format suivant : Si l’âge est inférieur à 30‚ il écrit la chaine de caractère « <30 ans ». La structure de contrôle case when…then…end dans le select de votre requête peut faire l’affaire. 3. Si l’âge est comprit entre 30 et 45‚ il écrit la chaine de caractère « 30-45 ans ». ainsi que leurs hiérarchies. Oracle permet de déclarer les dimensions.   H. créez les index nécessaires pour une meilleure optimisation des requêtes d’analyse par la suite. 2. Si l’âge est comprit entre 45 et 60‚ il écrit la chaine de caractère « 46-60 ans ». Ecrivez les requêtes SQL (de création de vues matérialisées) permettant le transfert/transformation des données depuis la base transactionnelle vers le Data Warehouse.developpez. Pour chacune des vues précédentes. 5.select level + date_a. (Pour un petit rappel sur les index sous oracle vous pouvez consulter le lien suivant : http://jpg. Vérifiez les mises à jour des vues matérialisées à travers quelques insertions de nouveaux tuples dans les différentes sources.

• On calcule le joint de la table des faits et des relations dimensionnelles. Ce type de requêtes est décrit d’avantage dans le tutorial joint à ce TP. Quelle est la quantité de produits vendus pour chaque catégorie. • On calcule une valeur agrégée (le plus souvent une somme). Faire les requêtes pour construire une telle table. groupe d’âge du client. catégorie puis par année. pour les années 2005 et 2006. • On groupe ces données suivant certaines dimensions. 3. Donnez la requête permettant de calculer l’hypercube du chiffre d’affaire sur les dimensions temps. sur le modèle ID. Donnez la moyenne des ventes par année. pays et par année. Restitution sous oracle III. Quel est le produit le plus vendu par année et par catégorie? 4. 7. pour les années 2006 et 2007. les 5 premiers jours de chaque mois de 2006 ? 10. nous allons construire une base de données de transactions. ARTICLE où ID est l’identifiant d’une transaction. catégorie (du produit). qu’on appellera H. 2. Utilisez la commande GROUPING_SETS. 6. Elghazel TP1 SIAD   . Pour cela. • On sélectionne des tuples en fonctions des données dimensionnelles. 1. Donnez tous les totaux de ventes par année selon la dimension catégorie. Approche ROLAP pour l’interrogation des entrepôts de données sous Oracle Dans le monde de l'informatique décisionnelle. adresse et produit tout en considérant les différentes hiérarchies pour chaque dimension. par année. Donnez le total des ventes par année.III.2. Quel est le meilleur mois de vente du produit "Sirop d érable" pour chacune des années ? 9. Une requête ROLAP est en général exprimée comme suit. Fouille de données (Data Mining) sous Oracle pour la recherche de motifs fréquents et les règles d’association Nous allons chercher à déceler dans cette partie des comportements d’achats des clients. Quelle est la répartition par tiers des catégories selon leurs quantités totales vendues en 2006 (cf NTILE) ? III. On ne veut pas le résultat pour le total sur toutes les années (utiliser la fonction GROUPING_ID). âge du client. Répondre aux questions suivantes en interrogeant votre entrepôt de données par des requêtes : 1. le ROLAP (Relational On-Line Analytical Processing) est une solution d’analyse OLAP qui voit un entrepôt de données comme un SGBD relationnel et qui permet de l’interroger en utilisant des requêtes SQL étendu (en général très complexes et très exigeantes en terme de ressources et de temps d’exécution).1. Donnez la moyenne des ventes par année. Quel est le produit le plus vendu par sexe du client et par trimestre? 5. 8. par année. pays (du client). ainsi que selon la dimension nom du client. et ARTICLE est le nom d’un produit. groupe d’âge et par année.

htm).com/docs/cd/B19306_01/appdev. Elghazel TP1 SIAD .oracle. la taille des motifs en sortie. à n’importe quelle date. il est fortement conseillé d'utiliser l'aide en ligne d'Oracle (http://download.com/docs/cd/B12037_01/appdev. Faire varier le support. Essayer d’extraire des règles d’association. Donner les motifs les plus fréquents par taille. Pour cela.   H. 4.TRANSACTIONS. pour déceler des ensembles fréquents intéressants. Pour cela.102/b14258/d_frqist. Rechercher les motifs fréquents dans cette table en utilisant une fonction fournie par Oracle. il est fortement conseillé d'utiliser l'aide en ligne d'Oracle (http://download. htm) et comprendre l’exemple présenté sur ce lien pour la fonction FI_TRANSACTIONAL.101/b10802/d_datmin. 3. 2. Deux articles sont dans la même transaction s’ils sont achetés par le même client.oracle. aller à la fonction "GET_ASSOCIATION_RULES Function" et comprendre l’exemple présenté.