Vous êtes sur la page 1sur 22

Implmenter un Data Warehouse sous SQL Server

15 April 2016 CloudboyBusiness Intelligence

Dans cet article, nous mettrons en place un Cube de donnes sous Microsoft SQL Server 2012. Nous
dcrivons toutes les tapes ncessaires pour le construire, avec des captures dcran. Le but tant de
comprendre la notion du cube de donnes et lappliquer en utilisant un outil de Business Intelligence.

1. Conception
Du point de vue conceptuel, un cube de donnes est une partie dun systme dinformation appel entrept
de donnes, ou en anglais le Data Warehouse. Le cube est fourni avec des machines internes qui peuvent
traiter des volumes levs de donnes dans une priode relativement courte de temps, et dont le but est
toujours dobtenir un rsultat numrique (montant des ventes, le nombre de produits vendus etc). Ces
rsultats numriques obtenus sont appels mesures, tandis que les lments utiliss pour trier/filtrer les
informations sont appels dimensions.

Un cube de donnes est reprsent, comme son nom lindique, sous forme dun cube, divis horizontalement
et verticalement en une srie de divisions qui donnent lieu de multiples cellules, qui identifient chacun des
rsultats possibles des mesures obtenu par lintersection de chaque cellule des dimensions qui composent le
cube. La figure suivante montre une reprsentation graphique dun cube, avec des informations sur les
ventes par produit, par employ et par devise. Comme vous remarquez, sur les cts du cube sont placs les
dimensions, dont le croisement de ses derniers produit des rsultats numriques (chaque cellule).

Les principaux lments dans un Data Warehouse

Comme mentionn ci-dessus, un cube de donnes est une pice dune architecture plus complexe : le Data
Warehouse, dans lequel le processus de cration se compose de plusieurs phases, qui sont responsables de
prendre les donnes dorigine ltat brut et les traiter jusqu avoir des informations prtes pour lanalyse.
La figure suivante montre un schma o lon peut voir les phases de ce processus de transformation.
Globalement reprsent, ce processus effectue, en premier lieu, une opration dextraction, transformation et
de chargement de donnes (ETL) dorigine de la source, situe dans la zone oprationnelle, une base de
donnes situe dans la zone dintgration, en utilisant SQL Server Integration Services (SSIS) qui effectue
galement des tches de nettoyage des donnes.

Ensuite, nous passons la phase de construction du cube, que nous allons dvelopper en utilisant SQL
Server Analysis Services (SSAS). Enfin, nous arrivons au stade de dinteraction des utilisateurs finaux avec
notre cube, en utilisant plusieurs produits tels que SQL Server Reporting Services (SSRS), Excel ou bien
dautres.

2. Tables de Faits, tables de dimension


Pour construire un cube de donnes nous avons besoin dune base de donnes contenant une table appele
table de faits, dont la structure est forme par une srie dattributs, appels des mesures, partir de laquelle
nous obtenons des rsultats numriques du cube; et dautre part, un ensemble dattributs appels attributs de
dimension, que nous allons utiliser pour joindre les tables de dimension, afin dobtenir des rsultats filtr
par les diffrentes dimensions intgrant le cube.

Lautre fondement principal dans la cration du cube est faite partir des tables de dimension. Pour chaque
dimension ou catgorie de requte/filtre que nous intgrons dans notre cube, nous aurons besoin dune table
qui nous permettra de faire une jointure avec la table de faits par un champ cl. Cette table de dimension
agira comme un catalogue de valeurs, galement appels attributs, qui seront utiliss indpendamment ou
combins avec dautres dimensions, pour obtenir des rsultats avec une plus grande prcision.

3. Dveloppons un Cube de donnes


Une fois les notions de base expliques, nous entrons dans la partie pratique de larticle, o nous allons
dvelopper notre propre cube de donnes. Nous allons concentrer tous vos efforts exclusivement sur la
cration de cube, sans tenir compte des oprations dETL (Extraction, transformation et chargement) qui
seraient effectues laide du service SSIS, puisque ces derniers sont des oprations qui sortent du cadre de
cet article.

Pour bien suivre cet article, nous aurons besoin de :

Microsoft Office Excel 2010 ou ultrieure.

Microsoft SQL Server 2012 Business Intelligence version anglaise (langue dorigine ).
La base de donnes de test AdventureWorksDW2012 que vous pouvez la tlcharger en cliquant ici.
Voir la vido suivante pour pouvoir attacher la base de donnes de test SQL Server

Tout dabord, partir du menu Dmarrer de Windows, nous allons lancer SQL Server Data Tools. Ceci est
une version spciale de Visual Studio pour le dveloppement des projets BI. Nous allons crer un nouveau
projet en cliquant sur File -> New -> Project. partir de la bote de dialogue, nous allons slectionner, dans
le volet Business Intelligence, la catgorie de modle Analysis Services, puis Analysis Services
Multidimensional and Data Mining en tant que modle de projet, en lui donnant le nom AdventuresWork.

Ensuite, dans lexplorateur de solution (Solution Explorer), cliquez-droit sur le noeud Sources de donnes
(Data Sources) et slectionnez loption Nouvelle source de donnes (New Data Source), qui ouvre
lassistant pour crer la source de donnes du cube, dans notre cas, a sera la base de donnes de test
AdventureWorksDW2012, dont la structure est prte tre utilise dans la conception des cubes de donnes.

partir de la fentre de lAssistant, nous cliquons sur Next, nous devons maintenant slectionner notre
source de donnes, pour linstant, nous navons aucune source de donnes, nous allons la crer en cliquant
sur le bouton New, une nouvelle fentre souvre qui nous invite saisir les donnes relatives la source de
donnes (voir capture ci-dessous), nous prcisons le nom ou ladresse IP du serveur de base de donnes, ou
bien saisir . ou localhost (qui signifie le serveur local) puis nous slectionnons la base de donnes
AdventureWorksDW2012. Nous cliquons sur le bouton Test Connection pour tester la connexion la base
de donnes, aprs nous cliquons sur OK.

Nous revenons lassistant de cration de source de donnes dont la base de donnes quon viens de
spcifier est slectionne, Nous cliquons sur Next. On coche lavant dernire case Use the credentials of
the current user. puis Next (encore une fois). En arrivant ltape finale, lassistant affiche un rsum de la
source de donnes, On laisse le nom de la Data Source par dfaut et on clique sur Finish.
Notre prochaine tape est de crer une vue de la source de donnes, ce qui permettera, comme son nom
lindique, de dfinir une vue personnalise de la base de donnes, y compris les tables dont nous avons
besoin pour crer le cube.

Dans cet exemple de cube, nous allons mesurer le montant des ventes que les revendeurs de la socit
AdventureWorks ont facturs. Nous devons avoir la possibilit de filtrer les rsultats par devise dans
laquelle la vente a t faite, et par la zone gographique o la commande a t envoy. Nous allons utiliser :

FactResellerSales (table de faits) : qui contient les mesures concernant les montants des ventes,
DimSalesTerritory (table de dimension) : qui contient les zones gographiques de ventes,
DimCurrency (table de dimension) : qui contient les devises.

En cliquant droit sur le nud Vues de source de donnes (Data Source Views) dans lExplorateur de
solutions, nous allons slectionner loption nouvelle vue de source de donnes (New Data Source View), qui
ouvre un assistant dans lequel la premire tape consiste choisir la source de donnes que nous venons de
crer. Dans la deuxime tape, nous allons slectionner les tables mentionnes.
Une fois lassistant termin, il affiche une fentre qui comporte un schma conceptuel des tables
slectionnes, avec les relations existantes entre eux.

4. Construction des dimensions. Dimension de base


Ltape suivante consiste crer la dimension qui nous permettra dinterroger/filtrer les informations du
cube par devise de paiement de la commande.
4.1. Etapes :
Un clic droit sur le nud Dimensions de lExplorateur de solutions, nous allons slectionner loption
New Dimension, un assistant souvre comme dhabitude. Dans sa premire tape, nous slectionnons la
mthode de cration, nous allons laisser loption par dfaut Use an existing table (Utiliser une table
existante).

Nous cliquons sur Next, dans ltape Spcifiez la Source dinformation, trois listes droulantes nous
permettent de configurer les informations obtenir pour la dimension:

1. Main Table (table principale) pour choisir la table utilis dans la dimension, la table DimCurrency;
2. Key Columns (les colonnes cls) pour indiquer la (les) cl(s) primaire(s);
3. Name Column (la colonne Nom), slectionnonsle champ CurrencyName, qui identifie lattribut afficher.
Dans la phase Slection des Attributs de la dimension (Select Attributs Dimension), lassistant
nous proposera CurrencyKey comme un attribut de la dimension, que nous allons utiliser, mais en changeant
son nom Currency. Un attribut est un champ, normal ou calcul, appartenant la table de dimension qui
est considr comme une tiquette dans toute la dimension implique lors de lintrogation du cube de
donnes.
A la dernire tape, nous allons donner le nom Currency la dimension, et on clique sur Finish. Le
concepteur de dimension souvrira maintenant avec la structure que nous venons de crer. Parmi toutes les
proprits de lattribut Currency, le plus important et lattribut Name, qui contient le nom qui apparatra lors
de lintrogation du cube; KeyColumns, qui contient le champ cl de la table qui est li la table de faits, et
NameColumn, contenant le champ de la table qui affiche la valeur de lattribut.
Dans le cas o nous avons besoin dajouter dautres attributs la dimension, il suffit de faire glisser et
dposer, depuis le concepteur Data Source View, les champs de la table dans la liste des attributs de notre
concepteur de structure de dimension.

Lorsque la cration dattribut est termin, nous traiterons de la dimension en cliquant sur le bouton
Process dans la barre doutils de notre concepteur, ou travers le menu Build -> Process de Visual Studio
(SQL Data Tools). Lorsque le traitement de la dimension est termin, nous allons cliquer sur longlet
Browser (Navigateur) du concepteur, o nous inspectons son contenu.
En cas derreur : ImpersonationMode qui nest pas prise en charge

Si vous rencontrez, lors du clique sur Process, lerreur suivante :

Ne paniquez pas ! la solution est la suivante. Double-cliquez sur votre Data Source, une fentre souvre :

Slectionnez la premire option Use a specific Windows user name and password, et saisissez le nom
dutilisateur et le mot de passe de ladministrateur Windows, puis cliquez sur OK. Re-cliquer sur Process,
et Voil !
4.2. Construction dune dimension hirarchique
En plus des dimensions un seul niveau, comme nous venons de le voir dans la section prcdente, nous
pouvons crer des dimensions qui groupent les donnes sur plusieurs niveaux, et qui offrent une plus grande
capacit de dcomposer les informations du cube lorsquil est consult par une dimension de ce type. Cet
lment est appel une hirarchie de dimension.

Prenons la table DimSalesTerritory de notre vue de source de donnes (Data Source View). Nous pouvons
voir que la combinaison des champs SalesTerritoryGroup, SalesTerritoryCountry et SalesTerritoryRegion
nous permettera dtablir plusieurs niveaux de regroupement.

Supposons que nous devons crer une dimension base sur cette table pour obtenir, partir du champ
SalesTerritoryGroup, un affichage de niveau hirarchique. Pour le faire, nous allons crer la dimension
laide de lassistant de la mme faon explique dans la section prcdente. Lattribut par dfaut slectionn
par lassistant correspondra la cl primaire de la table: le champ SalesTerritoryKey.
Une fois localis dans le concepteur de dimension, faites glisser de la table, depuis le panneau Data Source
View, les champs SalesTerritoryGroup, SalesTerritoryCountry et SalesTerritoryRegion, et dposer les sur le
panneau Attributes de notre concepteur.

Ensuite, faites glisser lattribut SalesTerritoryGroup dans le volet Hirarchies, qui va crer une nouvelle
hirarchie. Nous allons changer son nom par dfaut par Sales Territory (territoire de vente). On dpose
galement dans cette hirarchie les attributs SalesTerritoryCountry and SalesTerritoryRegion, notant que
ct du nom de lhirarchie apparat une icne davertissement qui nous informe que les relations entre les
attributs hirarchiques ne sont pas correctement crs, ce qui peut affecter ngativement le
traitement (Process) de la dimension.

Pour rsoudre ce problme, nous allons cliquez sur longlet Attributes Relationships (Relations
dattributs), o lon voit les relations entre les attributs automatiquement crs par le concepteur.

Toutefois, ces relations ne rpondent pas nos besoins, donc nous allons slectionner ces flches dans le
diagramme et les supprimer. Pour crer des nouvelles relations, cliquez et glissez depuis lattribut source la
destination, vous devez avoir le diagramme suivant :
Avant le lancement du Process de la dimension, revenant longlet Structure de dimension pour vrifier si
lavertissement a disparu. Dautre part, nous allons slectionner tous les attributs du panneau Attributs,
affectant la valeur False la proprit AttributeHierarchyVisible, ainsi les attributs indpendants ne seront
pas afficher, car ce qui nous intresse ici est dexplorer la hirarchie seulement. La figure suivante montre le
rsultat de dimension, avec tous les lments de la hirarchie largie.

4.3. Construction du Cube


Nous sommes arrivs la dernire tape dans le dveloppement de notre exemple : la construction du cube
de donnes. Nous commencerons par un clic droit sur le nud Cubes dans lExplorateur de solutions et en
slectionnant loption New Cube (Nouveau Cube), qui ouvrira lassistant de cration. Nous laissons les
valeurs par dfaut jusqu ltape Select Measure Group Tables (slection des tables de groupe de
mesure), qui comme son nom lindique, nous demande de slectionner la table contenant les champs que
nous utilisons comme des mesures pour le cube, savoir la table de faits, qui dans ce cas sera
FactResellerSales.
En cliquant sur Next, allez dans ltape Select Measures (slection des mesures), o nous devons
slectionner les champs qui servent de mesures au cube. Le but de ce cube est de dterminer le montant des
ventes (Sales Amount) effectues par les revendeurs, est donc, nous ne slectionnons que le champ
SalesAmount.
Ltape suivante nous invite slectionner les dimensions qui feront partie du cube. Il dtecte
automatiquement les dimensions cres, et qui sont dj slectionns par dfaut.

Lassistant effectue ensuite une recherche dans la table de faits pour trouver un champ qui pourrait aussi tre
capable dtre trait comme une dimension. Puisque nous navons pas besoin de cette fonctionnalit, nous
dcochez la slection de la table de fait en tant que source pour la cration de dimensions.
Et maintenant la dernire tape, o nous allons donner le nom DistributionDesVentes au cube, puis Finish.

Le concepteur de cube saffiche, montrant divers lments cls, tels que les dimensions, les mesures,
diagramme des tablesetc.
Dans le volet Measures apparat la mesure slectionne dans lassistant. Dans la fentre des proprits, nous
pouvons changer le nom (Name), la fonction dagrgation (AggregateFunction) utilis pour calculer la
mesure, le champ de table utilis (Source), la chane de format (FormatString), et ainsi de suite. Nous allons
changer le nom pour mettre Montant des Ventes.

Pour que la mesure apparat correctement format, en plus dattribuer une valeur la proprit
FormatString, dans les proprits du cube, nous devons affecter la valeur French (France) la proprit
Language.

Enfin, avant que nous puissions voir le cube, comme nous lavons fait avec les dimensions, nous devons
lancer le traitement en cliquant sur le bouton Process, ce qui ouvre la bote de dialogue de traitement du
cube, puis nous cliquons sur le bouton Run.
Une fois que le cube trait, nous pouvons voir son contenu en cliquant sur longlet Browser. Dans le volet
Measure Group, nous allons tendre le noeud Measures jusqu la mesure Montant des Ventes, nous la
dplaons dans la zone centrale de lcran.

Notez bien que, dans les anciennes versions du SQL Data Tools, il tait possible de construire, comme le
montre la capture ci-dessous, un tableau crois directement partir du concepteur du Cube. A lheure quil
est, cette fonctionnalit est devenu obsolte, et nexiste plus dans Microsoft SQL Server.
Lalternative, cest de le faire sous Microsoft Excel en cliquant sur licne de MS Excel en haut.

Aprs le clique sur ce bouton, Une fentre MS Excel souvre, dans le panneau droite du tableur, nous
slectionnons les champs, ou attributs, inclure dans notre tableau crois (PivotTable en anglais). Cochez
toutes les cases Montant des Ventes, Currency et Hierarchy. Ensuite, cliquez sur le bouton en haut droite
de ce mme panneau et slectionnez Section Zone Uniquement (2 X 2).

Ensuite, faites glisser le champ Currency dans la zone tiquettes de colonnes, pour le dfinir comme
colonnes du tableau crois.
Nous obtenons le tableau crois de donnes ou chaque cellule affiche la mesure calcule partir de
lintersection des dimensions places dans des colonnes et ceux places dans les lignes.

Et voil !
5. Conclusion
Dans cet article, nous avons fait une introduction au dveloppement de cubes de donnes Avec SQL Server
2012 Analysis Services, un composant de la famille Microsoft SQL Server destin fournir des solutions de
business intelligence. Les possibilits et la puissance de cet outil sont normes, et nous encourageons le
lecteur les implmenter.