Escolar Documentos
Profissional Documentos
Cultura Documentos
A2011
But ........................................................................................................................................... 3
2.
3.
II.
2.
3.
Partie 2 :
I.
II.
Partie 3 :
I.
Tableau simple....................................................................................................................... 29
2.
Graphique .............................................................................................................................. 29
3.
Tableau crois........................................................................................................................ 30
II.
2.
3.
III.
1.
2.
3.
IV.
1.
2.
Conclusion ............................................................................................................................................. 39
Table des illustrations............................................................................................................................ 40
Introduction
Pour valider lacquisition des comptences de lUV BD51, nous devons dvelopper un systme
dcisionnel pour la gestion des ventes par magasins pour la base de donnes Emode. Cette base est
volumineuse et il est donc ncessaire de crer des outils pour permettre une exploration facilite de
ses donnes.
Une base existe dj sous Oracle et notre travail consiste crer une autre base de donnes sous
SQLServer. Celle-ci rcupre lensemble des informations se trouvant dans la base Oracle. Aprs
avoir mis en place le transfert des donnes entre ces deux bases, nous devons construire plusieurs
outils (rapports, cube ).
Dans un premier temps, nous expliquerons comment nous avons mis en uvre la vrification puis le
transfert des donnes ainsi que lautomatisation de ce transfert. Dans un deuxime temps, nous
montrerons comment optimiser le Data Warehouse via la mise en place dun partitionnement et la
cration dun projet Analysis Services. Finalement, nous crerons diffrents rapports organisant les
donnes de la base.
Partie 1 :
I.
Fonctions dETL
Le schma de la base Oracle nindique aucune contrainte de cl primaire ou trangre. Des donnes
ne respectant pas ces contraintes peuvent donc avoir t introduites. Il faut donc identifier ces
donnes que nous mettrons dans des tables de rejet.
2. Tables de rejet
Afin de conserver une trace des donnes corrompues, nous crons dabord pour chaque table du
schma une table de rejet. Une table de rejet reprend les mmes colonnes que la table dorigine.
Exemple : cration dune table de rejet pour la table des articles.
create table article_reject (
article_code number(6,0)
, article_label varchar2(45 byte)
, category varchar2(25 byte)
, sale_price number
, family_name varchar2(20 byte)
, family_code varchar2(3 byte)
);
Cette syntaxe est celle dOracle et nest pas forcment valable pour SQL Server. Il faudra donc faire
attention cela si on veut crer des tables de rejet sous plusieurs SGBD.
a. Vrification de cl primaire
Pour tre cl primaire dune table, un champ doit tre unique. Une simple requte permet dafficher
les identifiants en double.
article_code, count(*)
from
article_lookup
group by
article_code
having
count(*) > 1;
Cette requte permet ensuite de recopier les donnes corrompues dans la table de rejet
correspondante.
Exemple : copie des lignes correspondant aux codes darticles en double dans la table de rejet.
insert into
article_reject(article_code,
family_name, family_code)
article_label,
category,
sale_price,
select
a1.article_code,
a1.article_label,
a1.family_name, a1.family_code
a1.category,
a1.sale_price,
from
article_lookup a1
inner join (select
a2.article_code, count(*)
from
article_lookup a2
group by
a2.article_code
b. Vrification de cl trangre
Pour tre cl trangre dune table, toutes les valeurs dune colonne doivent exister dans la table
correspondante. Une simple requte permet dafficher les identifiants des lignes ne respectant pas
cette contrainte.
Exemple : affichage des codes darticles prsents dans la table destination (critre article) mais non
prsents dans la table source (article).
select distinct alc.article_code
from article_lookup_criteria alc
where alc.article_code not in (select a.article_code from article_lookup a);
Cette requte permet ensuite de recopier les donnes corrompues dans la table de rejet
correspondante.
article_code,
criteria_type,
criteria,
select
alc1.id,
alc1.article_code,
alc1.criteria_type,
alc1.criteria_type_label, alc1.criteria_label
alc1.criteria,
from
article_lookup_criteria alc1
inner join (select
from
distinct alc2.id
article_lookup_criteria alc2
where
a.article_code from article_lookup a)) alc3
alc2.article_code
not
in
(select
on alc1.id = alc3.id
;
II.
La base de donnes Emode contient 7 tables : 5 tables de dimension et 2 tables de faits. Voici le
modle de la base de donnes, pouvant conduire deux modles en toile, lun autour de la table
SHOP_FACTS et lautour de la table PRODUCT_PROMOTION_FACTS.
Vous trouverez joins au rapport le script SQL permettant la cration de ces tables et des contraintes
qui les lient. Vous trouverez galement le script SQL qui cre les tables de rejet qui contiendront les
donnes non valides. Il existe une table de rejet par table dans Emode.
Pour assurer le suivi des futurs transferts, nous avons cr deux tables daudit. Celles-ci permettent
de stocker les diffrents lments qui tracent les oprations effectues. Elles seront remplies lors des
oprations de transfert dans les packages SSIS.
La table AUDIT contient :
-
ce
logiciel
nous
avons
rgl
la
proprit
Nous avons ralis trois packages, chacun ayant une tche diffrente.
a. Premier package : transfert de la totalit des donnes
Le premier package se nomme transfertDonnees.dtsx. Il permet de transfrer la totalit des donnes
de toutes les tables du serveur Oracle vers le serveur SQL Server.
Ce package ncessite deux connexions : lune la base Oracle (SourceConnectionOLEDB) et lautre
la base SQL Server (DestinationConnectionOLEDB).
Ce package comporte plusieurs tapes que vous pourrez voir sur la capture dcran suivante.
Tout dabord, le package supprime toutes les donnes dans les tables de SQL Server laide dune
commande SQL dans un Execute SQL Task . Nous supprimons les contraintes de cl trangre,
nous supprimons les donnes puis nous recrons les contraintes.
Ensuite, nous transfrons les donnes en plusieurs tapes grce des Data Flow Task . Les
contraintes de cl trangre nous forcent entrer les donnes dans un ordre prcis. Nous
commenons par insrer les donnes dans les tables sans cl trangre, ensuite dans shop_facts puis
dans product_promotion_facts et, pour finir, dans les tables restantes avec des cls trangres.
Aprs ces transferts, nous appellons le package TransfertTablesAggregat.dtsx grce un Execute
Package Task .
Quand le package a fini de sexcuter, nous affichons un message confirmant sa bonne excution
grce un Script Task .
Chaque tche se droule environ de la mme faon. Un OLEDDB Source rcupre les donnes de
la table choisie dans la base Oracle. Un Lookup permet de vrifier sil y a des doublons dans la
table grce une requte SQL. Nous redirigeons les champs ne correspondant pas la requte vers
la table de rejet. Les champs rpondant la requte sont dirigs soit vers la table destination soit
vers un autre Lookup qui vrifie une contrainte de cl trangre. Le principe reste le mme
jusqu ce que toutes les contraintes soient valides.
Les champs qui ont t rejet par un Lookup sont runis dans un unique flux grce un Union
All . Ce flux va ensuite vers la table de rejet.
Le schma Emode_inc contient les mmes tables de dimensions et de faits que le schma Emode.
Ces tables se nomment de la mme faon avant en suffixe _inc. Elles ont la mme structure et
contiennent un champ supplmentaire type_modification qui stocke inc si la modification est
une insertion, upd si cest une mise jour et del si cest une suppression.
Dans chaque table, il ne peut y avoir quune seule entre pour une cl primaire des tables dans
Emode. Si on insre des donnes avec une cl primaire 45, elle est insre dans la table Emode_inc
correspondante avec type_modification = ins . Ensuite si on supprime lentre de cl primaire 45,
on met jour lentre dans la table dEmode_inc avec type_modification = del .
create table article_color_lookup_inc
(
article_code number(6) not null,
color_code number(4) not null,
article_label VARCHAR2 (45) ,
color_label VARCHAR2 (30) ,
10
= :new.article_code
and COLOR_CODE
= :new.color_code;
end if;
END;
/
Pour que ces triggers puissent sexcuter sans encombre, le schma Emode doit avoir le droit
dinsrer et de modifier dans les tables dEmode_inc.
Droulement du package
Ce package ncessite trois connexions : lune la base Emode (SourceConnectionOLEDB), lautre la
base SQL Server (DestinationConnectionOLEDB) et la dernire Emode_inc.
Ce package comporte plusieurs tapes que vous pourrez voir sur la capture dcran suivante.
Premirement, le package vide les tables de rejets grce un Execute SQL Task .
Ensuite nous traitons les tables une par une dans un ordre prcis grce des Data Flow Task .
Nous commenons par les tables de dimensions sans cl trangre, ensuite celles avec cl trangre
et nous finissons par les tables de faits Aprs chaque transfert de donnes dune table, nous vidons
la table du schma Emode_inc correspondante grce un Execute SQL Task .
Nous finissons de la mme manire que le premier package.
11
12
13
14
15
3. Automatisation de la procdure
Une fois le package dvelopp, il existe plusieurs manire dautomatiser lexcution de celui-ci.
Lexcution peut se faire de manire immdiate partir du fichier dtsx. Nous pouvons aussi planifier
lexcution laide SQL Agent ou dune tche au niveau du systme dexploitation.
a. Excution immdiate
Nous pouvons excuter le package en louvrant avec le logiciel SQLServer Business Intelligence
Development Studio puis en cliquant sur Debug > Start debugging. Le logiciel permet de voir les
erreurs qui ont pu se produire lors du transfert.
16
Dans cette fentre il suffit de crer une nouvelle tche qui fera rfrence notre package SSIS. Cette
tche est planifie un certain intervalle, selon le jour et lheure. A partir de la fentre Scheduled
Tasks, chaque tche peut tre excute manuellement.
17
Le package utilis peut tre directement indiqu dans le file system, ou bien il peut aussi tre
dploy sur le serveur.
18
Partie 2 :
I.
Nous avons mis en place un systme de partitionnement sur nos tables de fait. Ces tables
possdent de nombreux enregistrements, ainsi, le partitionnement rpond des problmes de
tables trs volumineuses en permettant de les dcomposer en partitions plus petites, ce qui facilite
laccs et de mise jour des donnes.
La cration de table de partitionnement sur une base de donnes SQL Server nest pas la mme
manire que celle dune base Oracle. Sur une base Oracle, il suffit de crer nos tables de partition en
rajoutant le mot cl partition, avec les paramtres de partitionnement. Il est possible dutiliser
diffrent mode de partitionnement. Avec SQL Server, seul le partitionnement par plage de valeur est
possible.
Pour pouvoir crer une table partitionne, il faut commencer par crer sa fonction de
partitionnement. Son rle est de dfinir des "points de partitionnement" ou les valeurs qui dlimitent
les partitions. Ensuite, il est ncessaire de crer un schma de partitionnement. Un schma de
partitionnement spcifie les zones de partitionnement physiques et les associent la fonction de
partitionnement, ces zones de partitionnement sont appel filegroups. Il suffit de crer notre table
partitionne et lui associer le schma de partitionnement cre prcdemment avec les champs
dsirs comme paramtre de fonction de partitionnement.
Pour notre base, nous avons dcid de dcouper la table SHOP_FACTS en 6 partitions. La valeur
de notre champ WEEK_KEY permet de classifier les enregistrements. Lenregistrement possdant une
valeur de 1 53 comme WEEK_KEY se retrouve dans la premire table, de 53 105 pour la deuxime
table etc La dcoupe a t faite telle que chaque partition corresponde aux semaines dune mme
anne.
USE EMODE_sauvegarde
go
alter database EMODE_sauvegarde
add Filegroup emode_part_1997
go
alter database EMODE_sauvegarde
add Filegroup emode_part_1998
go
alter database EMODE_sauvegarde
add Filegroup emode_part_1999
go
alter database EMODE_sauvegarde
add Filegroup emode_part_2000
19
20
21
22
23
II.
SQL Server Analysis Services fournit des fonctions OLAP et d'exploration de donnes pour les
applications dcisionnelles. Analysis Services, laide de ces fonctions, permet de crer et grer des
modles multidimensionnels, ici de notre base de donnes relationnelles Emode ;
Dans notre projet Analysis Services, plusieurs dimensions sont dfinies qui reprsentent les
composants de notre cube. Ces dimensions organisent les donnes par domaine (Temps, gographie,
Employ, Client ). Elles contiennent des attributs qui correspondent des colonnes de tables de la
base de donnes. Les attributs peuvent tre mis dans des hirarchies, qui sont utilise pour organiser
les mesures contenues dans notre cube.
Dans notre cas, quatre hirarchies ont t cres :
-
Shops : liste des magasins hirarchiss par ltat du magasin, puis la ville.
Date : dimension pour organiser les annes, les trimestres, les mois et les semaines au sein
dune hirarchie.
24
Nous avons donc toutes les dimensions ncessaires la cration de notre cube. Sa structure est donc
la suivante avec en jaune les faits et en bleu les dimensions :
25
Nos donnes sont prtes tre parcourues laide des diffrentes dimensions. Pour plus de
compltude, des mesures calcules (Calculations) ont t cres. Celles-ci permettent davoir, en
plus des mesures dorigine, le pourcentage de marge par rapport au chiffre daffaire, le pourcentage
du chiffre daffaire que reprsente une catgorie de produit par rapport au chiffre daffaire total et
pour finir, le pourcentage de la marge que reprsente une catgorie de produit par rapport la
marge total.
Ces nouvelles mesures sont ajoutes celles dj prsentes. A leur ct, on peut y voir les
diffrentes dimensions (hirarchie et autres attributs) cres auparavant et qui vont nous servir pour
parcourir les donnes.
26
Figure 19 - SSAS : Parcours cube, Chiffre daffaire et Pourcentage chiffre daffaire par famille de produit
Lillustration prcdente montre le chiffre daffaire ainsi que le pourcentage que reprsente le
chiffre daffaire de chacune des familles de produit. Ce parcours sappuie sur deux hirarchies
(Product et Date) ainsi que sur la mesure Revenue et la mesure calcule Revenue ratio to all
articles .
27
Figure 20 - SSAS : Parcours cube, Chiffre d'affaire par hirarchie de produit et de magasin
Cette nouvelle illustration sappuie sur les hirarchies concernant les produits et celle concernant
les magasins.
28
Partie 3 :
I.
Microsoft SQL Server Reporting Services (SSRS) propose des outils pour crer des rapports sur le
contenu dun entrept de donnes. On peut, par exemple, diter des tableaux simples, des
graphiques ou encore des tableaux croiss.
1. Tableau simple
Lexemple ci-dessous montre un tableau simple, affichant les chiffres daffaires des diffrents
magasins de lentreprise au cours des annes 1999 2001. Les donnes numriques peuvent faire
lobjet de totaux en pied de colonne.
2. Graphique
Lexemple suivant utilise les mmes donnes en les prsentant sous forme de graphique. On peut
ainsi, par exemple, facilement constater :
-
29
3. Tableau crois
Enfin, pour obtenir des informations plus dtailles, afficher des sous-totaux, on peut mettre en
place des tableaux croiss. On verra ainsi, sur cet exemple, les diffrents tats ainsi que les magasins
dpendant de ces territoires en en-ttes de ligne et les annes en en-ttes de colonnes. Cela permet
notamment dobtenir des sous-totaux par tat et de pouvoir les comparer entre eux.
30
II.
Pour gnrer des rapports Web Intelligence, il faut pralablement dvelopper un univers BO. Cela
permet de crer des classes et objets, utiliss dans les requtes de rapports, et dindiquer o sont les
donnes correspondant ces objets.
1. Structure gnrale de lunivers
Comme le montre le schma suivant, le modle de lentrept de donnes est un modle en toile
organis autour de la table des ventes. Les diffrentes dimensions de lunivers (date, article, couleur,
magasin) sont relies directement cette table.
Les deux tables indpendantes sont des tables dagrgats. Les informations contenues proviennent
des cinq tables du modle en toile mais sont agrges de manire obtenir une granularit moins
fine. Par exemple, dans la seconde table dagrgat, les ventes dun mme tat sont regroupes au
lieu dtre divises par ville et par magasin.
31
Figure 24 BO : Univers
32
Nanmoins, une table dagrgat ne comprenant pas lobjet Ville ne pourra pas tre utilise dans
une requte demandant cet objet. Il faut donc dclarer les incompatibilits dune table dagrgat
avec les objets de lunivers. La fentre prsente ci-dessous permet de configurer cela.
33
III.
Maintenant que lunivers est en place, nous pouvons diter des tableaux de bord partir du contenu
de lentrept de donnes. Le procd se droule en trois tapes :
-
34
Le mme travail a t effectu pour visualiser graphiquement les quantits vendues par anne et par
tat. Ces quantits ont t rapportes en pourcentage.
35
Ces contrles ont t ajouts tous les rapports affichant des donnes.
36
IV.
Excel permet aussi de crer des tableaux de bord partir dune source de donnes externe.
2. Utilisation de filtres
Power Pivot permet de crer des Dcoupages verticaux et horizontaux sur le tableau crois
dynamique. De la mme faon que les contrles dentre de BO, cet outil permet de filtrer les
donnes.
Sur lexemple suivant, on peut par exemple choisir un seul tat et visualiser les ventes de ses
magasins de 1999 2001.
37
38
Conclusion
Ce projet nous a permis de dcouvrir les diffrentes phases de la conception de systmes
dcisionnels ainsi que les diffrents outils du march disponibles pour dvelopper ces applications.
Nous avons dabord mis en place des procdures dETL ( Extract-Transform-Load ) laide de
scripts SSIS (SQL Server Integration Services). Cela permet de vrifier la qualit des donnes de la
base source, o elles sont enregistres sous Oracle, et de les transfrer dans une base destination
sous SQL Server, utilise comme data warehouse pour le dveloppement doutils statistiques.
Ensuite, dans un souci doptimisation des performances du data warehouse, nous avons partitionn
les tables de faits (ventes et promotions), du fait quelles contiennent un trs grand nombre de
donnes.
Nous avons aussi utilis loutil SSAS (SQL Server Analysis Services) pour crer un cube avec
notamment la cration de hirarchies au sein des tables de dimensions.
Enfin, nous avons pu manipuler diffrents outils permettant de crer des tableaux de bord partir
des donnes stockes. Nous avons dans un premier temps gnr des rapports simples avec
tableaux, tableaux croiss et graphiques grce SSRS SQL Server Reporting Services). Nous avons
dans un deuxime temps cr un univers BO (Business Objects) et dvelopp des rapports avec Web
Intelligence. Nous avons, pour terminer, utilis le tableur Excel et son complment Power Pivot pour
crer des tableaux croiss dynamiques partir du data warehouse.
On peut dire que ce projet a t une bonne introduction au domaine de la Business Intelligence.
39
40