Vous êtes sur la page 1sur 51

REALISER SON PREMIER SYSTEME DECISIONNEL

Sommaire
Introduction............................................................................................................................................. 2
Cration des tables de faits et de dimension .......................................................................................... 2
Cration dune table de faits ............................................................................................................... 5
Cration des tables de type dimension ............................................................................................... 7
La dimension Temps ............................................................................................................................ 9
Cration du cube ................................................................................................................................... 36
Cration du diagramme..................................................................................................................... 36
Peaufiner le cube............................................................................................................................... 51

Rf. 1 M. THIOYE Page 1 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
Introduction

Dans une entreprise commerciale, la mise en uvre de lanalyse des factures est
gnralement un bon choix, pour deux raisons :

- Raison technique : gnralement le systme de facturation est assez bien


maitris par le service informatique et les donnes sont structures,
prsentes et accessibles dans le systme dinformations de lentreprise.
- Raison mtier : les donnes de facturation intressent la plupart des
services tels que la direction gnrale, la direction des ventes, la finance,
le marketing et la mise la disposition dun systme danalyse des
factures est souvent assez riche en informations et donc en valeur
ajoute.

Analyse se fera suivant quatre principaux axes :

- Laxe produit.
- Laxe client.
- Laxe site.
- Laxe temps.

Pour cette partie nous procderons de la manire suivante :

- Nous modliserons la solution finale en construisant lentrept de donnes


puis le cube.
- Nous gnrerons des donnes de test afin de nous assurer que le modle
rpond nos attentes.
- Puis dans une tape ultrieure, nous nous intresserons remonter les
donnes de vos systmes sources dans lentrept de donnes, que nous
aurons prcdemment modlises.

Cration des tables de faits et de dimension

Pour crer la base de donne nous allons utiliser SSMS en respectant les
conditions suivantes :

Rf. 1 M. THIOYE Page 2 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
- La nouvelle base de donne DistrisysDW doit tre crer avec le modle de
rcupration simple. Une base de donne transactionnel ne doit pas
enregistrer les logs de transaction.
- Assurer que le compte service de votre SQL serveur les privilges en
lecture sur DistrisysDW.

Rf. 1 M. THIOYE Page 3 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 4 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Cration dune table de faits

Les tables de faits seront construites en trois blocs :

- Le premier bloc dtaille les liaisons avec les tables de dimension avec les
quatre axes danalyse DateFacturation_FK, Site_FK, Produit_FK et
Client_FK. La granularit de la table de faits FactFacture correspond une
ligne : par jour (date de facturation), par site de facturation, par produit et
par client. Cela signifie que, potentiellement, nous pourrons regrouper et
sommer en une seule ligne, les lignes de facture ayant ces mmes
critres. Ce regroupement est appel agrgat.

Rf. 1 M. THIOYE Page 5 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
Note : chaque champ de liaison ne tolre pas de valeur null. Ces champs
de liaison seront des cls trangres.
- Le second bloc dtaille les mesures de la table de faits, ces mesures sont
issues dun travail conjoint avec le service de contrle de gestion de
Distrisys. Nous avons les relations suivantes entre ces diffrentes mesures
Prix catalogue = CA TTC + Remise
CA TTC = CA HT + TVA
CA HT = Cot Indirect + Cot Direct Main duvre + Cot Direct Matire
+ Marge
Les mesures de la table des faits sont tous de type numric (9, 2) afin de
grer les nombres rels compris entre -1 000 000,00 et 1 000 000,00.
- Le troisime bloc liste des champs dits de dimensions dgnres, ces
champs nont pas dutilit dans lanalyse. Ils reprsentent gnralement
une rfrence au grain de la table de faits. Ces champs permettront de
faire le lien entre le systme dcisionnel et le systme source. Ces champs
sont assez couteux en espace, car ils sont gnralement en type varchar :
1 octet par carractere plus 2 octets. Un varchar(6) coute donc entre 2 et
8 octets par ligne dans la table de faits.

Crer la table de fait de la manire suivante :

Rf. 1 M. THIOYE Page 6 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

La table FactFacture.

Cration des tables de type dimension


Nous allons crer les tables de dimensions suivantes :

- DimProduit.
- DimSite.
- DimClient.

Commenons par la cration de la table de dimension DimProduit, les tables de


dimensions sont construites en deux blocs :

- Le premier bloc identifie le champ de cl technique de la table de


dimension Produit

cette cl technique ne doit pas tre issue de votre systme source.

Rf. 1 M. THIOYE Page 7 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
- Le deuxime bloc de colonnes liste les attributs de la dimension produit

la dimension produit se dcompose en 3 niveaux (le niveau Famille, le


niveau SousFamille, le niveaux Produit). Les champs suffixs code
serviront de cl didentification unique de lattribut, tandis que lautre
champ correspondra la dsignation : la valeur affiche pour lutilisateur.

Saisir les 10 premiers lments.

Idem pour DimSite, DimGeographie et DimClient.

Rf. 1 M. THIOYE Page 8 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

La dimension Temps
La table Temps est unique et sa prsence est obligatoire dans toute table de
faits, quelle quelle soit. La prsence de la dimension Temps dans une table de

Rf. 1 M. THIOYE Page 9 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
faits est une des caractristiques dun systme dcisionnel par rapport un
systme transactionnel.

La table de dimension Temps une granularit au jour.

- Dans certains cas, vous aurez besoin de faire lanalyse lheure et il


sagira de crer une dimension heure. Ne jamais intgrer les heures au
sein de la dimension Temps.
- Dans dautres cas, vous aurez une table de faits la granularit mois, il
sagira de considrer le premier jour ou le dernier jour du mois comme
tant reprsentatif du mois.

Lexprience vous apprendra quune table de dimension bien construite


permettra danticiper bon nombre de complication ultrieures.

Dans la suite nous allons crer notre propre table de dimension Temps avec le
SQL Serveur Data Tools.

Crer un projet Analysis Services du type ci-dessous.

Rf. 1 M. THIOYE Page 10 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
Crer une nouvelle source de donne

Nous allons suivre lassistant

Rf. 1 M. THIOYE Page 11 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 12 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Cliquez sur new pour se connecter votre serveur.

Rf. 1 M. THIOYE Page 13 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 14 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 15 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 16 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 17 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Maintenant que la source de donnes est cre, nous allons crer une dimension
Temps dans le projet Analysis Services.

Rf. 1 M. THIOYE Page 18 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 19 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 20 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 21 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 22 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 23 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

A laffichage de lassistant de gnration de schma, cliquer sur suivant :

Rf. 1 M. THIOYE Page 24 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 25 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 26 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 27 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 28 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 29 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 30 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 31 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Il est recommand dutiliser une cl Temps_PK de type int au format aaaammjj.


Cette cl vous vitera de nombreux cueils lors du chargement de vos donnes.
Les champs de type date tant souvent source de problme dalimentation,
dautres parts ce type de cl vous permettra davoir de meilleur performance.

Cette codification au format aaaammjj devra tre gnralise tous les niveaux
de notre axe temps : anne, semestre, trimestre, mois, semaine

Chaque niveau (anne, semestre, trimestre, mois, semaine, jour) soit compos
de trois attributs distincts :

- Code
- Date
- Nom

Attribut Type Valeur exemple Commentaire


MoisCode Int 20160606 Format aaaammjj
MoisDate SmallDateTime 2016-06-06 Format date
00 :00 :00
MoisNom Varchar(50) Juin 2016 Valeur au format
affiche

Rf. 1 M. THIOYE Page 32 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
Il faudra raliser les travaux suivants sur la table DimTemps, pour faciliter
lutilisation :

- Renommer un certain nombre de colonnes


- Modifier les types de donnes DateTime en SmallDateTime
- Modifier les types de donnes nvarchar en varchar
- Crer la cl Temps_PK ainsi que les colonnes AnneeCode, SemestreCode,
TrimestreCode, MoisCode et semaineCode.
- Remplir les valeurs des champs crer
- Modifier les colonnes interdire la valeur null
- Repositionne la cl primaire sur Temps_PK.

Script

USE [DistrisysDW]

-- Suppression de la cl primaire
ALTER TABLE [dbo].[Time] DROP CONSTRAINT [PKTime]
GO

-- Renommage des colonnes


EXEC sp_rename N'[dbo].[Time].[PKDate]', N'Date', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[DateName]', N'Jour', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[Year]', N'AnneeDate', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[YearName]', N'AnneeNom', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[HalfYear]', N'SemestreDate', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[HalfYearName]', N'SemestreNom', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[Quarter]', N'TrimestreDate', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[QuarterName]', N'TrimestreNom', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[Month]', N'MoisDate', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[MonthName]', N'MoisNom', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[Week]', N'SemaineDate', 'COLUMN'
GO
EXEC sp_rename N'[dbo].[Time].[WeekName]', N'SemaineNom', 'COLUMN'
GO

-- Modification des types de donnes DateTime en SmallDateTime


ALTER TABLE [dbo].[Time] ALTER COLUMN [Date] [smalldatetime] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [AnneeDate] [smalldatetime] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemestreDate] [smalldatetime] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [TrimestreDate] [smalldatetime] NOT NULL

Rf. 1 M. THIOYE Page 33 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
ALTER TABLE [dbo].[Time] ALTER COLUMN [MoisDate] [smalldatetime] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemaineDate] [smalldatetime] NOT NULL
GO

-- Modification des types de donnes nvarchar en varchar


ALTER TABLE [dbo].[Time] ALTER COLUMN [Jour] [varchar] (50) COLLATE French_CI_AS NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [AnneeNom] [varchar] (50) COLLATE French_CI_AS
NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemestreNom] [varchar] (50) COLLATE
French_CI_AS NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [TrimestreNom] [varchar] (50) COLLATE
French_CI_AS NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [MoisNom] [varchar] (50) COLLATE French_CI_AS
NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemaineNom] [varchar] (50) COLLATE French_CI_AS
NULL
GO

-- Cration des colonnes de type _Code


ALTER TABLE [dbo].[Time] ADD [Time_PK] [int] NULL
ALTER TABLE [dbo].[Time] ADD [AnneeCode] [int] NULL
ALTER TABLE [dbo].[Time] ADD [SemestreCode] [int] NULL
ALTER TABLE [dbo].[Time] ADD [TrimestreCode] [int] NULL
ALTER TABLE [dbo].[Time] ADD [MoisCode] [int] NULL
ALTER TABLE [dbo].[Time] ADD [SemaineCode] [int] NULL
GO

-- Remplir Temps_PK
UPDATE [dbo].[Time]
SET [Time_PK] =
(
CAST(YEAR([Date]) AS varchar(50))
+
(
CASE WHEN MONTH([Date])<10
THEN '0' + CAST(MONTH([Date]) AS varchar(50))
ELSE CAST(MONTH([Date]) AS varchar(50))
END
)
+
CASE WHEN DAY([Date])<10
THEN '0' + CAST(DAY([Date]) AS varchar(50))
ELSE CAST(DAY([Date]) AS varchar(50))
END
)

-- Remplir AnneeCode
UPDATE [dbo].[Time]
SET [AnneeCode] =
(
CAST(YEAR([AnneeDate]) AS varchar(50))
+
(
CASE WHEN MONTH([AnneeDate])<10
THEN '0' + CAST(MONTH([AnneeDate]) AS varchar(50))
ELSE CAST(MONTH([AnneeDate]) AS varchar(50))
END
)
+
CASE WHEN DAY([AnneeDate])<10

Rf. 1 M. THIOYE Page 34 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
THEN '0' + CAST(DAY([AnneeDate]) AS varchar(50))
ELSE CAST(DAY([AnneeDate]) AS varchar(50))
END
)

-- Remplir SemestreCode

UPDATE [dbo].[Time]
SET [SemestreCode] =
(
CAST(YEAR([SemestreDate]) AS varchar(50))
+
(
CASE WHEN MONTH([SemestreDate])<10
THEN '0' + CAST(MONTH([SemestreDate]) AS varchar(50))
ELSE CAST(MONTH([SemestreDate]) AS varchar(50))
END
)
+
CASE WHEN DAY([SemestreDate])<10
THEN '0' + CAST(DAY([SemestreDate]) AS varchar(50))
ELSE CAST(DAY([SemestreDate]) AS varchar(50))
END
)

-- Remplir TrimestreCode

UPDATE [dbo].[Time]
SET [TrimestreCode] =
(
CAST(YEAR([TrimestreDate]) AS varchar(50))
+
(
CASE WHEN MONTH([TrimestreDate])<10
THEN '0' + CAST(MONTH([TrimestreDate]) AS varchar(50))
ELSE CAST(MONTH([TrimestreDate]) AS varchar(50))
END
)
+
CASE WHEN DAY([TrimestreDate])<10
THEN '0' + CAST(DAY([TrimestreDate]) AS varchar(50))
ELSE CAST(DAY([TrimestreDate]) AS varchar(50))
END
)

-- Remplir MoisCode
UPDATE [dbo].[Time]
SET [MoisCode] =
(
CAST(YEAR([MoisDate]) AS varchar(50))
+
(
CASE WHEN MONTH([MoisDate])<10
THEN '0' + CAST(MONTH([MoisDate]) AS varchar(50))
ELSE CAST(MONTH([MoisDate]) AS varchar(50))
END
)
+
CASE WHEN DAY([MoisDate])<10
THEN '0' + CAST(DAY([MoisDate]) AS varchar(50))

Rf. 1 M. THIOYE Page 35 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
ELSE CAST(DAY([MoisDate]) AS varchar(50))
END
)

-- Remplir SemaineCode
UPDATE [dbo].[Time]
SET [SemaineCode] =
(
CAST(YEAR([SemaineDate]) AS varchar(50))
+
(
CASE WHEN MONTH([SemaineDate])<10
THEN '0' + CAST(MONTH([SemaineDate]) AS varchar(50))
ELSE CAST(MONTH([SemaineDate]) AS varchar(50))
END
)
+
CASE WHEN DAY([SemaineDate])<10
THEN '0' + CAST(DAY([SemaineDate]) AS varchar(50))
ELSE CAST(DAY([SemaineDate]) AS varchar(50))
END
)

-- modifier les colonnes pour interdire la valeur null


ALTER TABLE [dbo].[Time] ALTER COLUMN [Time_PK] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [Jour] [varchar] (50) COLLATE French_CI_AS NOT
NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [AnneeCode] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [AnneeNom] [varchar] (50) COLLATE French_CI_AS
NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemestreCode] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemestreNom] [varchar] (50) COLLATE
French_CI_AS NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [TrimestreCode] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [TrimestreNom] [varchar] (50) COLLATE
French_CI_AS NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [MoisCode] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [MoisNom] [varchar] (50) COLLATE French_CI_AS
NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemaineCode] [int] NOT NULL
ALTER TABLE [dbo].[Time] ALTER COLUMN [SemaineNom] [varchar] (50) COLLATE French_CI_AS
NOT NULL
GO

-- Positionner la cle primaire sur Temps_PK


ALTER TABLE [dbo].[Time] ADD CONSTRAINT [PK_Time] PRIMARY KEY CLUSTERED ([Time_PK])
GO

Cration du cube
Cration du diagramme
Nous allons dans le SSMS pour prparer notre digramme qui nous facilitera la cration de notre cube.

A la cration du diagramme si vous manquez de privilge, le message ci-dessous saffiche.

Rf. 1 M. THIOYE Page 36 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Pour corriger cette erreur, utiliser la commande suivante.

Rf. 1 M. THIOYE Page 37 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Nous allons passer maintenant la cration de notre cube avec SSAS

1. Crer un projet SSAS avec SSDT

Rf. 1 M. THIOYE Page 38 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 39 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
2. Mettez en place la connexion votre entrept de donne. Sur ci-dessus faite clic droit sur le
data source et nouvelle source de donne.

Rf. 1 M. THIOYE Page 40 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
Bien choisir le compte service.

3. Cration de la source de view avec le diagramme, clic droit sur data source view et nouveau

Rf. 1 M. THIOYE Page 41 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 42 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

4. Cration de notre cube, clic droit sur cube, nouveau.

Rf. 1 M. THIOYE Page 43 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 44 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 45 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 46 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 47 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL
5. Dploiement sur SSAS, noublier pas de donner les privilges ncessaires au comptes
systme.

Rf. 1 M. THIOYE Page 48 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 49 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Rf. 1 M. THIOYE Page 50 / 51


REALISER SON PREMIER SYSTEME DECISIONNEL

Peaufiner le cube

Rf. 1 M. THIOYE Page 51 / 51

Vous aimerez peut-être aussi