Vous êtes sur la page 1sur 41

UTBM Dpartement Informatique

BD51 - Data warehouse


Boris Ahodikpe - Renaud Joly - Delphine Lacour

A2011

BD51 - Data warehouse

Table des matires


Introduction............................................................................................................................................. 2
Partie 1 :
I.

Fonctions dETL .................................................................................................................... 3

Vrification de la validit des donnes ....................................................................................... 3


1.

But ........................................................................................................................................... 3

2.

Tables de rejet ......................................................................................................................... 3

3.

Identification des donnes corrompues.................................................................................. 3

II.

Transfert des donnes ................................................................................................................. 6


1.

Cration des tables sous SQLServer ........................................................................................ 6

2.

Transfert des donnes ............................................................................................................. 7

3.

Automatisation de la procdure ........................................................................................... 16

Partie 2 :

Optimisation du Data Warehouse ..................................................................................... 19

I.

Mise en place du partitionnement des tables de faits .............................................................. 19

II.

Cration d'un projet Analysis Services ...................................................................................... 24

Partie 3 :
I.

Mise en place du reporting ............................................................................................... 29

Cration dun projet Reporting Services ................................................................................... 29


1.

Tableau simple....................................................................................................................... 29

2.

Graphique .............................................................................................................................. 29

3.

Tableau crois........................................................................................................................ 30

II.

Cration dun univers Business Objects .................................................................................... 31


1.

Structure gnrale de lunivers ............................................................................................. 31

2.

Dfinition dun objet ............................................................................................................. 32

3.

Gestion des tables dagrgats ............................................................................................... 32

III.

Edition de tableaux de bord Web Intelligence ...................................................................... 34

1.

Slection des donnes ........................................................................................................... 34

2.

Mise en forme ....................................................................................................................... 35

3.

Ajout de contrles dentre .................................................................................................. 36

IV.

Edition de tableaux de bord Excel ......................................................................................... 37

1.

A partir dun cube Analysis Services ...................................................................................... 37

2.

Utilisation de filtres ............................................................................................................... 37

Conclusion ............................................................................................................................................. 39
Table des illustrations............................................................................................................................ 40

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

Partie 1 :
I.

Fonctions dETL

Vrification de la validit des donnes


1. But

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.

3. Identification des donnes corrompues


Pour chaque table, une vrification dunicit doit tre faite sur la ou les colonnes correspondant la
cl primaire de la table. Pour chaque table pointant sur dautres tables (par exemple SHOP_FACTS),
on vrifie si les identifiants utiliss sont bien prsents dans la table pointe (vrification des cls
trangres).

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse


Exemple : affichage des codes darticles en double dans la table des articles.
select

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

having count(*) > 1) a3


on a1.article_code = a3.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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

Exemple : copie des lignes correspondantes dans la table de rejet.


insert into
article_lookup_criteria_reject(id,
criteria_type_label, criteria_label)

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
;

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

II.

Transfert des donnes


1. Cration des tables sous SQLServer

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.

Figure 1 - ETL : Modle de la base

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 :
-

un identifiant gnr automatiquement


le numro de la tche (transfert)
la date de dbut de la tche
statut de lalimentation

La table AUDIT_ERROR contient :


-

un identifiant gnr automatiquement


le numro de la tche (transfert)
la date de dbut de la tche
lID de la ligne qui a rencontr un problme lors du transfert
le nom de la table dans laquelle il y a eu le problme
un champ dinformation sur lerreur

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse


2. Transfert des donnes
Le transfert de toutes les donnes contenu dans les tables de la base Emode sous Oracle vers une
base sous SQLServer est ralis laide de packages SSIS dvelopps sous Business Intelligence
Development Studio.
Pour optimiser les fonctionnalits de
maxconcurrentexecutables au maximum.

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).

Figure 2 - ETL : Connexions requises dans le premier package

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 .

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

Figure 3 - ETL : Control flow

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse

Figure 4 - ETL : Data Flow de la table Article_lookup_criteria

b. Deuxime package : alimentation incrmentale et traabilit du transfert


Le second package se nomme transfertDonneesAvecTracabilite.dtsx. Il permet de transfrer
uniquement les nouvelles donnes, de modifier celles qui lont t et de supprimer celles qui doivent
ltre. Il intgre de plus la traabilit du transfert. Cest une alimentation incrmentale.
Cration du schma Emode_inc
Avant de crer ce package SSIS, nous avons d au pralable crer un nouveau schma Oracle qui
nous a permis de stocker les changements de donnes intervenant dans la base Emode.
connect / as sysdba;
create user emode_inc
identified by emode_inc;
grant connect, create table to emode_inc;

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) ,

Boris Ahodikpe - Renaud Joly - Delphine Lacour

BD51 - Data warehouse


category VARCHAR2 (25) ,
sale_price NUMBER(10,2) ,
family_name VARCHAR2 (20) ,
family_code VARCHAR2 (3),
type_modification varchar(3) not null
);
alter table article_color_lookup_inc
add constraint pk_acl_inc primary key ( article_code, color_code ) ;

Cration des trigger aprs une modification dans Emode


Pour remplir les tables dans Emode_inc, nous avons cr des triggers dans Emode qui se lancent ds
quune modification a lieu dans la base. Pour chaque table, nous avons cr trois triggers : un after
insert , un after update et un after delete , dont le principe reste le mme.
Nous rcuprons la cl primaire de la modification. Si la cl primaire est dj prsente dans la table
_inc, nous modifions lentre correspondante sinon nous insrons les donnes.
Voici un exemple de trigger sur la table article_color_lookup :
-- Table article_color_lookup -CREATE OR REPLACE TRIGGER TAI_acl
AFTER INSERT ON article_color_lookup
FOR EACH ROW
declare numrows INTEGER;
BEGIN
--on vrifie si il y a un dj un champ avec cette cl primaire
select count(*) into numrows
from emode_inc.article_color_lookup_inc
where
:new.article_code = emode_inc.article_color_lookup_inc.article_code
and :new.color_code = emode_inc.article_color_lookup_inc.color_code;
--si oui, on met a jour, sinon, on insert
if(numrows = 0) then
insert into emode_inc.article_color_lookup_inc
(article_code, color_code, article_label, color_label, category, sale_price,
family_name, family_code, type_modification)
values
(:new.article_code,:new.color_code,
:new.article_label,
:new.color_label,
:new.category, :new.sale_price, :new.family_name, :new.family_code, 'ins');
else
update emode_inc.article_color_lookup_inc
set
type_modification = 'ins',

Boris Ahodikpe - Renaud Joly - Delphine Lacour

10

BD51 - Data warehouse


article_label =:new.article_label,
color_label =:new.color_label,
category =:new.category,
sale_price =:new.sale_price,
family_name =:new.family_name,
family_code =:new.family_code
where ARTICLE_CODE

= :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.

Figure 5 : Connexions requises dans le deuxime package

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

11

BD51 - Data warehouse

Figure 5 - ETL : Control flow

Boris Ahodikpe - Renaud Joly - Delphine Lacour

12

BD51 - Data warehouse


Chaque tche se droule environ de la mme faon.
Un OLEDB Source rcupre les donnes de la table choisie dans la base Emode_inc. Ensuite une
tche Audit permet dajouter au flux dinformations le numro de transfert et la date de dbut de
lexcution.
Multicast permet de dupliquer le flux. Nous effectuons alors deux traitements en parallle.
Dun ct, nous remplissons la table daudit. Le flux passe travers un Aggregate qui vite quon
ait une entre dans la table Audit pour chaque entre de la table _inc. On ne souhaite quune entre
par table et par transfert dans la table AUDIT.
De lautre ct, nous remplissons la table dans Emode. Grce un Conditionnal Split , le flux est
divis en trois en fonction du champ type_modifcation. Nous traitons encore trois flux en parallle,
un pour linsertion, un pour la modification et un pour la suppression. Ces traitements sont similaires.
Un Lookup permet de vrifier si la cl primaire existe dj dans la table dEmode. Si cest le cas,
pour linsertion, lentre est rejete contrairement la mise jour et la suppression. Dans le cas
dune table avec des cls trangre, nous vrifions ensuite les cls trangres avec un Lookup .
Nous redirigeons les champs ne correspondant pas la requte vers la table de rejet.
Les champs validant toutes les contraintes sont dirigs vers un OLE DB Command qui excute une
requte SQL paramtre, soit INSERT INTO soit UPDATE soit DELETE dans la table du schma Emode.
Si cette requte a russi, le transfert de ces donnes a bien t effectu sinon un flux derreur est
cr. Les trois flux derreurs sont runis dans un unique flux grce un Union All . Il contient
lidentifiant de lentre et le code derreur. Nous ajoutons ce flux le nom de la table qui est cr
manuellement dans un Derived Column . Finalement, ce flux est envoy vers la table
ERROR_AUDIT.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

13

BD51 - Data warehouse

Figure 6 - ETL : Data Flow de la table Article_color_lookup

c. Troisime package : transfert des tables dagrgat


Le troisime package se nomme TransfertTablesaggregat.dtsx. Il permet de mettre jour les tables
dagrgat de la base Emode dans SQL Server en fonction des nouvelles donnes insres. Il est
appel depuis les deux premiers packages.
Il ne ncessite quune seule connexion, celle la base SQL Server (DestinationConnectionOLEDB). En
effet, il nutilise que les donnes de la base dans SQL Server.
Vous pouvez voir le droulement de ce package sur limage suivante.

Figure 7 - ETL : Control flow

Boris Ahodikpe - Renaud Joly - Delphine Lacour

14

BD51 - Data warehouse


Il contient deux Execute SQL Task . Lun vide les tables dagrgat et lautre insre les nouvelles
donnes partir de requtes INSERT INTO SELECT.
Voici les deux requtes dinsertion.
--agg_yr_qt_rn_st_ln_ca_sr
Insert into AGG_YR_QT_RN_ST_LN_CA_SR
(YEAR,QUARTER,STATE,LINE,CATEGORY,SALES_REVENUE)
Select
cyl.year
, 'Q' + convert(varchar(1),cyl.quarter) as quarter
, ol.state
, al.family_name
, al.category
, sum(sf.amount_sold) as sales_revenue
From
dbo.calendar_year_lookup cyl inner join shop_facts sf
on cyl.week_key = sf.week_key
inner join outlet_lookup ol
on ol.shop_code = sf.shop_code
inner join article_lookup al
on al.article_code = sf.article_code
Group by
cyl.year
, 'Q' + convert(varchar(1),cyl.quarter)
, ol.state
, al.family_name
, al.category
Order by
1,2,3,4,5,6;
--agg_yr_thru_sn_sr_qt_ma
Insert into AGG_YR_THRU_SN_SR_QT_MA
(YEAR,QUARTER,MONTH,MONTH_NAME,WEEK,CITY,STORE_NAME,SALES_REVENUE,QUANTITY_SOLD,MA
RGIN)
Select
cyl.year
, 'Q' + convert(varchar(1),cyl.quarter) as quarter
, cyl.month
, cyl.month_name
, cyl.week_in_year as week
, ol.city
, ol.shop_name as store_name

Boris Ahodikpe - Renaud Joly - Delphine Lacour

15

BD51 - Data warehouse


, sum(sf.amount_sold) as sales_revenue
, sum(sf.quantity_sold) as quantity_sold
, sum(sf.margin) as margin
From
calendar_year_lookup cyl inner join shop_facts sf
on cyl.week_key = sf.week_key
inner join outlet_lookup ol
on ol.shop_code = sf.shop_code
Group by
cyl.year
, 'Q' + convert(varchar(1),cyl.quarter)
, cyl.month
, cyl.month_name
, cyl.week_in_year
, ol.city
, ol.shop_name
Order by
1,2,3,4,5,6,7,8,9,10;

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.

Figure 8 - ETL : Excution immdiate du package

Boris Ahodikpe - Renaud Joly - Delphine Lacour

16

BD51 - Data warehouse


b. Tche planifie au niveau systme dexploitation
Pour crer une tche planifie, il faut aller dans All programs > Accessories > System Tools >
Scheduled tasks.

Figure 9 - ETL : Scheduled tasks

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.

Figure 10 - ETL : Proprits tche systme

Boris Ahodikpe - Renaud Joly - Delphine Lacour

17

BD51 - Data warehouse


Nous pouvons suivre lexcution via la fentre de console qui trace le droulement de lexcution du
package.
c. Travail dans SQL Agent
Dans SQL Server Management Studio, nous pouvons voir SQL Server Agent. Celui-ci nous permet de
crer des jobs qui permettra de planifier lexcution de notre packages SSIS. Comme toute tche
planifie, une option permet de dterminer la frquence dexcution du packages (par mois, par
semaine, par jour ainsi que lheure dexcution, ). Il est aussi possible de configurer la gestion des
erreurs afin de lamliorer. Les journaux derreurs vont apparaitre dans le dossier Error logs, dernier
dossier de larborescence.

Figure 11 - ETL : Job dans SQL Server Agent

Le package utilis peut tre directement indiqu dans le file system, ou bien il peut aussi tre
dploy sur le serveur.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

18

BD51 - Data warehouse

Partie 2 :
I.

Optimisation du Data Warehouse

Mise en place du partitionnement des tables de faits

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

Boris Ahodikpe - Renaud Joly - Delphine Lacour

19

BD51 - Data warehouse


go
alter database EMODE_sauvegarde
add Filegroup emode_part_2001
go
alter database EMODE_sauvegarde
add Filegroup emode_part_2010
go
alter database EMODE_sauvegarde
add Filegroup emode_part
go
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_1997,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_1997.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_1997;
GO
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_1998,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_1998.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_1998;
GO
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_1999,

Boris Ahodikpe - Renaud Joly - Delphine Lacour

20

BD51 - Data warehouse


FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_1999.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_1999;
GO
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_2000,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_2000.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_2000;
GO
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_2001,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_2001.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_2001;
GO
alter database EMODE_sauvegarde
ADD FILE
(
NAME = emode_data_part_2010,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part_2010.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part_2010;
GO

Boris Ahodikpe - Renaud Joly - Delphine Lacour

21

BD51 - Data warehouse

alter database EMODE_sauvegarde


ADD FILE
(
NAME = emode_data_part,
FILENAME = 'E:\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\emode_data_part.ndf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 10MB
) TO FILEGROUP emode_part;
GO
--------------------USE EMODE_sauvegarde
GO
create partition function FoncPart (NUMERIC(5,0)) as range left for values (53,105, 157,209,262,314);
GO
CREATE PARTITION SCHEME SchemaPart as partition FoncPart
to
(emode_part_1997,emode_part_1998,emode_part_1999,emode_part_2000,emode_part_2001,emo
de_part_2010, emode_part)
go
CREATE TABLE SHOP_FACTS_PART
(
ID NUMERIC (5,0) NOT NULL ,
ARTICLE_CODE NUMERIC (6,0) ,
COLOR_CODE NUMERIC (4,0) ,
WEEK_KEY NUMERIC (3,0),
SHOP_CODE NUMERIC (4,0),
MARGIN NUMERIC (18,0) ,
AMOUNT_SOLD NUMERIC (13,2) ,
QUANTITY_SOLD NUMERIC (13,2),
CONSTRAINT SHOP_FACTS_PART_PK PRIMARY KEY NONCLUSTERED (ID)
)
on SchemaPart(ID)
GO
ALTER TABLE SHOP_FACTS_PART

Boris Ahodikpe - Renaud Joly - Delphine Lacour

22

BD51 - Data warehouse


ADD FOREIGN KEY(ARTICLE_CODE, COLOR_CODE)
REFERENCES ARTICLE_COLOR_LOOKUP (ARTICLE_CODE, COLOR_CODE);
ALTER TABLE SHOP_FACTS_PART
ADD FOREIGN KEY(ARTICLE_CODE)
REFERENCES ARTICLE_LOOKUP (ARTICLE_CODE);
ALTER TABLE SHOP_FACTS_PART
ADD FOREIGN KEY(WEEK_KEY)
REFERENCES CALENDAR_YEAR_LOOKUP (WEEK_KEY);
ALTER TABLE SHOP_FACTS_PART
ADD FOREIGN KEY(SHOP_CODE)
REFERENCES OUTLET_LOOKUP (SHOP_CODE);
insert into SHOP_FACTS_PART
select * from SHOP_FACTS;
CREATE TABLE PRODUCT_PROMOTION_FACTS_PART
(
ID NUMERIC (5,0) NOT NULL ,
ARTICLE_CODE NUMERIC (6,0) ,
WEEK_KEY NUMERIC (3,0) ,
DURATION NUMERIC (2,0) ,
PROMOTION_KEY NUMERIC (2,0) ,
PROMOTION_COST NUMERIC (18,0),
CONSTRAINT PROD_PROM_FACTS_PART_PK PRIMARY KEY ( ID )
)
on SchemaPart(ID)
go
ALTER TABLE PRODUCT_PROMOTION_FACTS_PART
ADD FOREIGN KEY(ARTICLE_CODE)
REFERENCES ARTICLE_LOOKUP(ARTICLE_CODE);
ALTER TABLE PRODUCT_PROMOTION_FACTS_PART
ADD FOREIGN KEY(WEEK_KEY)
REFERENCES CALENDAR_YEAR_LOOKUP(WEEK_KEY);
insert into PRODUCT_PROMOTION_FACTS_PART
select * from PRODUCT_PROMOTION_FACTS;

Boris Ahodikpe - Renaud Joly - Delphine Lacour

23

BD51 - Data warehouse

II.

Cration d'un projet Analysis Services

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.

Figure 12 - SSAS : Hirarchie des magasins

Date : dimension pour organiser les annes, les trimestres, les mois et les semaines au sein
dune hirarchie.

Figure 13 - SSAS : Hirarchie des dates

Boris Ahodikpe - Renaud Joly - Delphine Lacour

24

BD51 - Data warehouse

Article : organisation des produits par famille et catgorie

Figure 14 - SSAS : Hirarchie des articles

Article_color : mme organisation que la prcdente avec lintgration de la couleur des


produits en plus

Figure 15 - SSAS : Hirarchie des articles et couleurs

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 :

Boris Ahodikpe - Renaud Joly - Delphine Lacour

25

BD51 - Data warehouse

Figure 16 - SSAS: Structure du cube

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.

Figure 17 - SSAS : Exemple de mesure calcule

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

26

BD51 - Data warehouse

Figure 18 - SSAS : Attributs du cube

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 .

Boris Ahodikpe - Renaud Joly - Delphine Lacour

27

BD51 - Data warehouse

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

28

BD51 - Data warehouse

Partie 3 :
I.

Mise en place du reporting

Cration dun projet Reporting Services

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.

Figure 21 SSRS : Tableau simple

2. Graphique
Lexemple suivant utilise les mmes donnes en les prsentant sous forme de graphique. On peut
ainsi, par exemple, facilement constater :
-

lvolution du chiffre daffaires dun magasin au fil des annes


la diffrence de chiffre daffaires entre plusieurs magasins.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

29

BD51 - Data warehouse

Figure 22 SSRS : Graphique

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

30

BD51 - Data warehouse

Figure 23 SSRS : Tableau crois

II.

Cration dun univers Business Objects

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

31

BD51 - Data warehouse

Figure 24 BO : Univers

2. Dfinition dun objet


Un objet classique ( Anne/semaine ) est reli une colonne dune des tables du modle. Un objet
peut tre indiqu comme un dtail dun autre objet ( Nom du mois pour Mois ).
Une classe peut aussi regrouper des objets dans une sous-classe.

Figure 25 BO : Dfinition d'objets

3. Gestion des tables dagrgats


Enfin, comme voqu plus haut, un objet provient la base dune des tables du modle en toile
mais peut aussi se trouver dans une table dagrgat. Il faut alors indiquer dans la dfinition de lobjet
dans quelle table on peut aller chercher cet lment.
Boris Ahodikpe - Renaud Joly - Delphine Lacour

32

BD51 - Data warehouse


Lobjet tat provient de la dimension des magasins mais est aussi dans la premire table
dagrgat. On indique alors cela dans le champ Select de sa dfinition grce la fonction
@Aggregate_Aware . Le nom de la table dagrgat doit figurer en premire position dans la liste
des tables sources. Un objet peut provenir de plusieurs tables dagrgats.

Figure 26 BO : Champs agrgs

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.

Figure 27 BO : Incompatibilits de tables d'agrgats

Boris Ahodikpe - Renaud Joly - Delphine Lacour

33

BD51 - Data warehouse

III.

Edition de tableaux de bord Web Intelligence

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 :
-

slection des donnes par une requte


mise en forme des donnes laide de tableaux ou de graphiques
ajout de contrles dentre.

1. Slection des donnes


La premire tape de construction dun rapport consiste slectionner les donnes qui nous
intressent. On choisit parmi les objets de lunivers que lon retrouve dans le panneau gauche de la
fentre de lditeur de requtes. Il suffit de glisser les objets dans le panneau Result Objects et de
cliquer sur Run Query .

Figure 28 BO : Editeur de requtes

Boris Ahodikpe - Renaud Joly - Delphine Lacour

34

BD51 - Data warehouse


2. Mise en forme
Un rapport est ensuite gnr automatiquement avec, par dfaut, un tableau affichant les donnes
slectionnes.
a. La premire chose faite ici est de mettre lanne en section. Cela permet davoir un tableau
par anne et non pas les donnes de toutes les annes dans le mme tableau.
b. Ensuite on choisit davoir un tableau crois avec les tats en lignes et les mois de lanne en
colonnes, de faon obtenir le total des ventes de chaque magasin pour chaque mois. On
ajoute en bas de colonnes le total des ventes par mois et en bout de ligne le total des ventes
par magasin.
c. On ajoute ensuite, via longlet Templates du panneau de gauche, un graphique reprenant
les mmes donnes afin de bien illustrer. On affiche les noms des tats en lgende.
d. Enfin on formate les nombres (lanne sans virgule, les ventes en format monnaie), on donne
un titre au rapport et on met le tout au format paysage afin de pouvoir afficher les douze
mois de chaque anne. En vitant de couper les sections, on obtient une anne (un tableau
et un graphique) par page.

Figure 29 BO : Mise en forme

Le mme travail a t effectu pour visualiser graphiquement les quantits vendues par anne et par
tat. Ces quantits ont t rapportes en pourcentage.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

35

BD51 - Data warehouse


3. Ajout de contrles dentre
BO permet dajouter des contrles dentre un rapport. Cela permet de filtrer les donnes
afficher.
En fonction du type de donnes, plusieurs contrles sont disponibles. Cela peut prendre la forme
dune liste droulante, dun champ de saisie simple ou encore de boutons radios pour saisir une
valeur unique. Si on souhaite pouvoir saisir plusieurs valeurs dans un filtre, on peut choisir une liste
de cases cocher ou une liste de valeurs.
Dans tous les cas, lutilisateur peut choisir All values .

Figure 30 BO : Contrles d'entre

Ces contrles ont t ajouts tous les rapports affichant des donnes.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

36

BD51 - Data warehouse

IV.

Edition de tableaux de bord Excel

Excel permet aussi de crer des tableaux de bord partir dune source de donnes externe.

1. A partir dun cube Analysis Services


Ici on retrouve toutes les composantes du cube Analysis Services voqu dans la partie 2. Le tableau
crois affiche les ventes de produits par anne ainsi que des totaux. Cependant les dimensions du
cube nous permettent de naviguer dans ce tableau travers les hirarchies de produit et de date.
Cela permet davoir un rsultat global que lon peut affiner.

Figure 31 Excel : Tableau crois dynamique et cube SSAS

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

37

BD51 - Data warehouse

Figure 32 Excel : Filtres

Boris Ahodikpe - Renaud Joly - Delphine Lacour

38

BD51 - Data warehouse

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.

Boris Ahodikpe - Renaud Joly - Delphine Lacour

39

BD51 - Data warehouse

Table des illustrations


Figure 1 - ETL : Modle de la base ........................................................................................................... 6
Figure 2 - ETL : Connexions requises dans le premier package ............................................................... 7
Figure 3 - ETL : Control flow .................................................................................................................... 8
Figure 4 - ETL : Data Flow de la table Article_lookup_criteria ................................................................ 9
Figure 5 - ETL : Control flow .................................................................................................................. 12
Figure 6 - ETL : Data Flow de la table Article_color_lookup .................................................................. 14
Figure 7 - ETL : Control flow .................................................................................................................. 14
Figure 8 - ETL : Excution immdiate du package ................................................................................. 16
Figure 9 - ETL : Scheduled tasks............................................................................................................. 17
Figure 10 - ETL : Proprits tche systme ........................................................................................... 17
Figure 11 - ETL : Job dans SQL Server Agent ......................................................................................... 18
Figure 12 - SSAS : Hirarchie des magasins ........................................................................................... 24
Figure 13 - SSAS : Hirarchie des dates ................................................................................................. 24
Figure 14 - SSAS : Hirarchie des articles .............................................................................................. 25
Figure 15 - SSAS : Hirarchie des articles et couleurs ........................................................................... 25
Figure 16 - SSAS: Structure du cube ...................................................................................................... 26
Figure 17 - SSAS : Exemple de mesure calcule .................................................................................... 26
Figure 18 - SSAS : Attributs du cube ...................................................................................................... 27
Figure 19 - SSAS : Parcours cube, Chiffre daffaire et Pourcentage chiffre daffaire par famille de
produit ................................................................................................................................................... 27
Figure 20 - SSAS : Parcours cube, Chiffre d'affaire par hirarchie de produit et de magasin ............... 28
Figure 21 SSRS : Tableau simple ......................................................................................................... 29
Figure 22 SSRS : Graphique ................................................................................................................ 30
Figure 23 SSRS : Tableau crois .......................................................................................................... 31
Figure 24 BO : Univers ........................................................................................................................ 32
Figure 25 BO : Dfinition d'objets ...................................................................................................... 32
Figure 26 BO : Champs agrgs .......................................................................................................... 33
Figure 27 BO : Incompatibilits de tables d'agrgats ......................................................................... 33
Figure 28 BO : Editeur de requtes .................................................................................................... 34
Figure 29 BO : Mise en forme ............................................................................................................. 35
Figure 30 BO : Contrles d'entre ...................................................................................................... 36
Figure 31 Excel : Tableau crois dynamique et cube SSAS ................................................................. 37
Figure 32 Excel : Filtres ....................................................................................................................... 38

Boris Ahodikpe - Renaud Joly - Delphine Lacour

40