Академический Документы
Профессиональный Документы
Культура Документы
VINCENT Jrmy
Roussel Xavier
13/01/12
13/01/2012
3. Optimisation .......................................................................................... 8
a. Partitionnement ...............................................................................................8
b. Analysis Services ..............................................................................................8
4. Reporting .............................................................................................. 13
a.
b.
c.
d.
Conclusion .................................................................................................. 20
Annexes ....................................................................................................... 21
Annexe 1 : Qualit des donnes ........................................................................ 21
Annexe 2 : Ajout de nouvelles donnes .......................................................... 29
Annexe 3 : Partitionnement des tables de fait ............................................. 32
13/01/2012
13/01/2012
INTRODUCTION
Dans le cadre de lUV BD51, nous avions notre charge la conception et le dveloppement
dun systme dcisionnel pour la gestion des ventes par magasin pour la base de donnes
EMODE.
Ce rapport aura comme objectif, dexpliquer en dtail, code source lappui, les diffrentes
tapes de la conception de ce projet, savoir la mise en uvre des fonctions dETL,
loptimisation du data warehouse et enfin, la mise en place du reporting.
Ce projet a t ralis sur une machine virtuelle de type Microsoft Virtual PC sous
Windows XP 32 bits version anglaise. Les systmes de gestion de base de donnes
impliqus sont oracle 11g et SQL Server 2008 R2.
13/01/2012
1. SCENARIO
Lobjectif de ce projet est dobtenir, dans la finalit, un systme permettant lutilisateur
lambda davoir une vision claire sur ltat des ventes par magasin de la base de donnes
EMODE, le tout en tablissant diffrents rapports mettant en avant les caractristiques
dsires par lutilisateur.
Pour ce faire, nous sommes passs par plusieurs tapes. Dans un premier temps, nous
devions effectuer un transfert de la totalit des donnes de la base Oracle sous une base
SQL Server, le tout laide de fonctions dETL, en loccurrence de packages SSIS.
Dans un second temps, nous avons entrepris doptimiser les donnes transfres afin de
diminuer au minimum les temps de calcul et damliorer les performances de notre
application.
Ensuite, nous avons mis en place par le biais dun projet Analysis Services, un cube OLAP
afin de naviguer au sein des donnes et davoir un aperu de la qualit de celles-ci. Ce cube
nous sera galement utile par la suite lors de la cration de notre tableau de bord Excel.
En effet, le cube prcdemment cr nous servira alors de source de donnes.
Enfin, pour terminer, nous avons mis en place diffrents types de rapports laide doutils
diffrents, tels Reporting Services et Web Intelligence.
Il est galement noter que nous avons pris la dcision de ne transfrer que les cinq tables
suivantes : ARTICLE_COLOR_LOOKUP, ARTICLE_LOOKUP, OUTLET_LOOKUP,
CALENDAR_YEAR_LOOKUP et SHOP_FACTS. En effet, aprs tude approfondie du
sujet, il sest avr que ces tables seront utilises dans chaque rapport et que les autres
prsentes dans la base Oracle nont quun intrt limit pour notre cas. De plus, ces cinq
tables interviennent dans notre modle en toile reprsent dans lunivers BO.
13/01/2012
2. FONCTIONS DETL
a. Qualit des donnes
La premire tape de ce projet fut la mise en place de requtes SQL permettant de
vrifier lintgrit des donnes dans la base dorigine, savoir Oracle 11g. En effet, avant
de commencer le transfert des donnes il tait ncessaire de vrifier que chaque contrainte
est bel et bien respecte, en vrifiant par exemple lunicit de chaque contrainte de cl
primaire ainsi que la prsence des cls trangres dans les tables rfrences.
Pour ce faire, nous avons rdig de simples requtes SQL (Cf. Annexe 1) que nous
utiliserons par la suite au sein de nos packages SSIS afin de vrifier la conformit des
donnes transfres.
De plus, ces requtes intgrent la traabilit de la non conformit des donnes
dans le sens o chaque donne non valide sera alors transfre dans une table de rejet
cre au pralable.
b. Packages SSIS
Le transfert des donnes de la base Oracle vers SQL Server seffectue laide de
packages SSIS crs avec Business Intelligence Development Studio. Chaque package ici
son rle jouer et cest pour cela que nous avons dcid de les traiter un par un, en les
diffrenciant les uns des autres.
Nous avons donc cr ici un premier package SSIS permettant deffectuer le transfert
intgral de notre base Oracle vers notre base SQL Server.
Pour ce faire, nous avons pris le parti de bien sparer chaque tape du transfert. De ce
fait, nous avons un premier sous package nomm "sub cration de EMODE" intgrant
compltement la procdure de suppression et cration de la base EMODE sous SQL
Server, ncessaire avant deffectuer le transfert des donnes en lui-mme.
Ci-aprs un schma prsentant la procdure suivie tout au long du processus de ce sous
package :
Suppression de
la base
EMODE dans
SQL SERVER
Creation de
EMODE dans
SQL Server
Cration des
tables de
donnes
Ajout des
contraintes de
cls primaires
Ajout des
contraintes de
cls trangres
13/01/2012
Chaque tape de ce package nest en fait quun simple script SQL permettant de grer
manuellement chaque table de lapplication. Ceci laisse alors supposer que lon connaisse
larchitecture des tables transfres lavance.
Ensuite, la seconde tape de la cration de ce package ft de traiter le transfert
proprement parler de la totalit des donnes.
Pour ce faire, au sein de notre package principal, la suite de notre sous package
intgrant la cration de la base, nous retrouvons un lment de type "data flow"
permettant alors de grer compltement notre flux de donnes et ainsi de vrifier
lintgrit des donnes transfres. Do lintrt des requtes cres prcdemment.
Transfert de
ARTICLE_COLOR_L
OOKUP
Transfert de
ARTICLE_LOOKUP
Transfert de
CALENDAR_YEAR_L
OOKUP
Transfert de
OUTLET_LOOKUP
Transfert de
SHOP_FACTS
Rcupration
des donnes de
la base Oracle
Vrification
de
l'intgrit
des donnes
Ajout des
donnes
dans la table
de rejet
Ajout des
donnes
dans la
table
Une fois ce processus termin, et quaucune erreur nest dplorer, il est ncessaire de se
proccuper du package permettant la gestion des tables dagrgation. En effet, il est
ncessaire chaque transfert de donnes de la sorte de rgnrer le contenu de chaque
table agrge afin den mettre jour le contenu.
13/01/2012
Afin de grer comme il se doit ces table dagrgat, nous avons dcid de crer une nouvelle
fois un sous package nomm "Package 4 : Gestion des tables dagrgation". En effet, dans
les spcifications du projet, il tait ncessaire que cette fonctionnalit soit lance la fin
de lexcution de chaque package. Cest donc tout naturellement que nous avons pris le
parti de crer un sous package totalement indpendant, ne prenant en compte que la
gestion de ces tables dagrgats.
Pour ce faire, de la mme manire que pour le premier sous-package cr, nous avons
simplement insr plusieurs "SQL tasks" grant lagrgation des tables concernes.
Le processus seffectue de la sorte :
Suppression
des deux
tables
d'agrgat
Cration des
deux tables
d'agrgat
Insertion des
donnes dans
les tables
d'agrgat
Suite cela, afin de procder la phase de tests de nos fonctions dETL, nous avons dcid
de mettre au point deux manires diffrentes deffectuer ces tests. Dans un premier temps,
en alimentant compltement la base EMODE, en partant dune base vide sous SQL
Server.
Dans un deuxime temps, nous avons choisi dinsrer de nouvelles donnes, relatives la
semaine de janvier 2012 afin davoir une nouvelle vision des donnes et qui permettrait
galement de vrifier que nos fonctions grant lagrgation des donnes seffectue
correctement. (Cf. Annexe 2)
Automatisation de la procdure
Pour terminer concernant la partie packages SSIS, nous avons choisi dautomatiser
lexcution de ces procdures. En effet, nous avons cr diffrents SQL Server Agent Jobs
afin que ces packages soient excuts en temps voulu.
13/01/2012
3. OPTIMISATION
a. Partitionnement
Le fait de partitionner nos deux tables de fait (ici, SHOP_FACTS et
PRODUCT_PROMOTION_FACTS) amliore nettement les performances et simplifie la
maintenance des ces tables. En effet, ces tables sont amenes lavenir augmenter
considrablement en volumtrie. De ce fait, un partitionnement devient alors ncessaire
dans le sens o de meilleures performances seront ncessaires en cas de traitement sur ces
donnes.
A savoir que la procdure de partitionnement pour ces deux tables est la mme chaque
fois.
1.
2.
3.
4.
5.
b. Analysis Services
Un des points importants de ce projet ft galement la cration dun cube OLAP et de ses
dimensions sous Analysis Services.
Pour ce faire, nous avons dans un premier temps cr une nouvelle source de donnes afin
de nous connecter directement notre base SQL Server.
Dans un deuxime temps, nous avons mis en place ce que lon appelle un "Data Source
View" afin de nous connecter notre base de donnes, et qui nous permettra par la suite
de rcuprer les diffrentes informations ncessaires la cration de notre cube, des
dimensions et de ses mesures associes.
La troisime tape consistait crer le cube en lui mme. Pour linstant, celui-ci est vide et
ne contient aucune mesure ni dimensions. En effet, nous avons privilgi le fait de les
crer manuellement plutt que dutiliser lassistant.
La quatrime tape concernait la cration de nos dimensions associes notre cube. Dans
notre cas, nous avons privilgi trois dimensions principales, qui nous paraissaient les
plus videntes lors de notre tude, savoir les dimensions de temps
(CALENDAR_YEAR_LOOKUP), de gographie (OUTLET_LOOKUP) et enfin de produits
(ARTICLE_LOOKUP).
13/01/2012
Gographie
Temps
13/01/2012
Produit
10
13/01/2012
Enfin, la sixime et dernire tape de la cration de ce projet Analysis Services ft
dexplorer le cube en utilisant les diffrentes mesures et dimensions cres. Ci-aprs,
quelques images illustrant les rsultats obtenus.
11
12
4. REPORTING
Une des dernires tapes de la ralisation de ce projet consistait crer et explorer
diffrents rapports analysant les ventes de chaque magasin du systme EMODE. Pour ce
faire, nous utiliserons diffrentes technologies afin de varier les sources de nos rapports et
dutiliser les diffrents outils tudis au cours de cette UV.
a. Reporting Services
Nous avons donc dans ce cas cr un projet de type Reporting Services, nous ayant permis
de crer des rapports de type tableaux et graphiques.
Dans un premier temps, aprs avoir cr un nouveau projet Analysis Services, nous avons
cr plusieurs nouveaux rapports correspondant chacune des mesures que nous voulons
tudier. Nous avons ensuite ajout une source de donnes chacun de nos rapports. Cette
source de donnes nest autre quune connexion la base SQL Server.
Par la suite, il a fallu crer des "datasets". Ces lments correspondent ni plus ni moins
la slection des donnes que nous dsirons mettre en vidence au sein de nos rapports.
Dans notre cas, nous avons dcid de saisir des requtes SQL nous amenant au rsultat
dsir.
Nous avons donc pour terminer cr et implment nos rapports avec le type dlment
dsir tel des tableaux ou des graphiques.
Une fois les rapports mis en forme et termins, il nous est donc rest les publier sur le
serveur afin que ceux-ci soient accessibles directement depuis le navigateur web
ladresse suivante : http://xpsql:8080/Reports.
13
13/01/2012
14
13/01/2012
b. Univers BO
Nous avons utilis ici le logiciel Universe Designer afin de recrer le modle en toile
suivant :
15
13/01/2012
Ce modle intgre les tables associes notre de table de faits SHOP_FACTS ainsi que
nos deux table agrges cres au sein de notre package SSIS dans la premire partie du
projet. Ces tables vont permettre par la suite damliorer considrablement les
performances en terme daffichage des donnes dans le sens o tout est plus ou moins prcalcul et donc le temps de chargement et de calcul sera moins long.
Dans un premier temps, nous avons d nous connecter notre base de donnes. Pour ce
faire, il nous a fallu crer une connexion entre Universe Designer et SQL Server et donc de
crer une nouvelle "datasource name" au sein de notre systme dexploitation. Par la suite,
la connexion avec la base sest effectue delle mme en utilisant "OLEDB provider for
SQL Server 2008".
Une fois connects la base, une liste des tables disponibles pour mettre en place notre
modle, nous est fournie depuis notre base de donnes. Aprs avoir slectionn les tables
dsires, il nous a suffit dorganiser tous les objets mtiers de la manire suivante :
16
13/01/2012
Pour terminer, une dernire tape reste ncessaire afin dobtenir les meilleurs rsultats
possibles : Mettre en place la navigation agrge laide de la fonction
agregate_aware().
Exemple de la navigation agrge pour les proprits Revenu des Ventes et Pays:
@aggregate_aware(sum(AGG_YR_QT_MT_MN_WK_RG_CY_SN_SR_QT_MA.SALES_REVENUE),s
um(AGG_YR_QT_M_ST_LN_CA_SR.SALES_REVENUE),sum(SHOP_FACTS.AMOUNT_SOLD))
@aggregate_aware(AGG_YR_QT_M_ST_LN_CA_SR.STATE,OUTLET_LOOKUP.STATE)
17
13/01/2012
c. Web Intelligence
Une fois notre univers (Universe Designer) cr, et donc disponible pour Interactive
Analysis, nous tions en mesure de crer les rapports dsirs.
Pour ce faire, an guise de set de donnes, nous avons slectionn les requtes suivantes :
Enfin, une fois nos requtes cres, vrifies et compiles, nous tions en mesure de crer
nos rapports.
18
13/01/2012
19
13/01/2012
CONCLUSION
Ce projet "Business Intelligence & Data Warehouse" nous aura permis de mettre en
application les nombreuses mthodes abordes au cours de lUV BD51. Ainsi, il reprend
une bonne partie des notions vues en cours et en TP.
De plus, ce projet nous aura galement permis daborder un nouvel aspect de la notion
dadministration de base de donnes, jusque ici inconnue nos yeux, savoir la
construction de cubes et ses dimensions associes ainsi que la cration et gestion totale de
rapports danalyse.
La tche sest en revanche avre plus complexe lorsquil a fallu aborder la partie des
packages SSIS. En effet, ceci tant compltement nouveau cela nous a permis, en plus
dappliquer nos connaissances, deffectuer des recherches supplmentaires afin de mettre
en place ce systme, et donc dacqurir une certaine autonomie et rigueur en termes de
ralisation de projet.
Notre projet prsente certes quelques lacunes au niveau des fonctions dETL, mais il nous
a permis daborder des notions nouvelles en rapport avec un projet de cette envergure,
dans sons ensemble, tant dans la rflexion que dans la ralisation, avec une collaboration
des membres du projet ayant chacun un bagage technique diffrent. Cest principalement
pour ces raisons que la ralisation dun tel projet nous apporte une grande satisfaction
autant personnelle que professionnelle.
20
13/01/2012
ANNEXES
Annexe 1 : Qualit des donnes
Ci-aprs, les scripts SQL vrifiant la qualit des donnes des tables utilises tout au long
du projet. Le reste des scripts se trouve sur le CD contenant les sources du projet.
ARTICLE_COLOR_LOOKUP (PK : ARTICLE_CODE, COLOR_CODE)
--Cls primaires en double
SELECT
ACL.ARTICLE_CODE
, ACL.COLOR_CODE
, CONCAT(ACL.ARTICLE_CODE,ACL.COLOR_CODE)
, COUNT(CONCAT(ACL.ARTICLE_CODE,ACL.COLOR_CODE))
FROM
ARTICLE_COLOR_LOOKUP ACL
GROUP BY
ACL.ARTICLE_CODE
, ACL.COLOR_CODE
, CONCAT(ACL.ARTICLE_CODE,ACL.COLOR_CODE)
HAVING
COUNT(CONCAT(ACL.ARTICLE_CODE,ACL.COLOR_CODE)) > 1
ORDER BY
1 ASC;
AS "Article code"
AS "Color code"
AS "Article code + Color code"
AS "Nombre de cls primaires"
21
13/01/2012
22
13/01/2012
23
13/01/2012
24
13/01/2012
25
13/01/2012
26
13/01/2012
SELECT
DISTINCT CYL.WEEK_KEY
FROM
CALENDAR_YEAR_LOOKUP CYL
)
ORDER BY
1 ASC;
INSERT INTO EMODE.SHOP_FACTS_BIN(
ID
, ARTICLE_CODE
, COLOR_CODE
, WEEK_KEY
, SHOP_CODE
, MARGIN
, AMOUNT_SOLD
, QUANTITY_SOLD)
SELECT
SF.ID
, SF.ARTICLE_CODE
, SF.COLOR_CODE
, SF.WEEK_KEY
, SF.SHOP_CODE
, SF.MARGIN
, SF.AMOUNT_SOLD
, SF.QUANTITY_SOLD
FROM
SHOP_FACTS SF
WHERE
SF.SHOP_CODE NOT IN (
SELECT
DISTINCT OL.SHOP_CODE
FROM
OUTLET_LOOKUP OL
)
AND SF.SHOP_CODE NOT IN (
SELECT
DISTINCT UOLF.SHOP_CODE
FROM
UNUSED_OUTLET_LOOKUP_FULL UOLF
)
ORDER BY
1 ASC;
INSERT INTO EMODE.SHOP_FACTS_BIN(
ID
, ARTICLE_CODE
, COLOR_CODE
, WEEK_KEY
, SHOP_CODE
, MARGIN
, AMOUNT_SOLD
, QUANTITY_SOLD)
SELECT
SF.ID
, SF.ARTICLE_CODE
, SF.COLOR_CODE
, SF.WEEK_KEY
, SF.SHOP_CODE
, SF.MARGIN
, SF.AMOUNT_SOLD
, SF.QUANTITY_SOLD
FROM
SHOP_FACTS SF
WHERE
CONCAT(SF.COLOR_CODE,SF.ARTICLE_CODE) NOT IN (
SELECT
DISTINCT CONCAT(ACL.COLOR_CODE,ACL.ARTICLE_CODE)
FROM
ARTICLE_COLOR_LOOKUP ACL
)
OR SF.ARTICLE_CODE NOT IN (
27
13/01/2012
SELECT
DISTINCT AL.ARTICLE_CODE
FROM
ARTICLE_LOOKUP AL
)
ORDER BY
1 ASC;
COMMIT;
28
13/01/2012
29
13/01/2012
30
13/01/2012
31
13/01/2012
32
13/01/2012
33
13/01/2012
Partitionnement de PRODUCT_PROMOTION_FACTS
-- Cration des filegroup
ALTER DATABASE EMODE ADD FILEGROUP PROMOP1;
ALTER DATABASE EMODE ADD FILEGROUP PROMOP2;
ALTER DATABASE EMODE ADD FILEGROUP PROMOP3;
ALTER DATABASE EMODE ADD FILEGROUP PROMOP4;
ALTER DATABASE EMODE ADD FILEGROUP PROMOP5;
ALTER DATABASE EMODE ADD FILEGROUP PROMOP6;
-- Cration des fichiers de partitionnement
ALTER DATABASE EMODE
ADD FILE
(NAME = N'PROMO_PART1',
FILENAME = N'E:\Microsoft SQL
Serveur\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\PROMO_PART1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [PROMOP1];
ALTER DATABASE EMODE
ADD FILE
(NAME = N'PROMO_PART2',
FILENAME = N'E:\Microsoft SQL
Serveur\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\PROMO_PART2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [PROMOP2];
ALTER DATABASE EMODE
ADD FILE
(NAME = N'PROMO_PART3',
FILENAME = N'E:\Microsoft SQL
Serveur\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\PROMO_PART3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [PROMOP3];
ALTER DATABASE EMODE
ADD FILE
(NAME = N'PROMO_PART4',
FILENAME = N'E:\Microsoft SQL
Serveur\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\PROMO_PART4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [PROMOP4];
34
13/01/2012
35