MIT820: Entrepôts de données et intelligence artificielle
Introduction aux outils BI de SQL Server 2014
Création de cubes dans SQL Server Analysis Services (SSAS)
Description générale
Ce tutoriel a pour objectif de vous familiariser avec la création et la manipulation de cubes de données dans l'outil SQL Server Analysis Services (SSAS). Plus spécifiquement, vous utiliserez une fois de plus l’entrepôt de données AdventureWorks pour définir les mesures, dimensions et les hiérarchies du cube. Vous verrez également comment créer des mesures dérivées et des indicateurs clés de performance, et apprendrez à faire des analyses simples à l’aide du langage MDX.
Pour plus d’informations sur ce tutoriel, consultez le lien suivant : https://msdn.microsoft.com/en-us/library/ms170208.aspx
I. Étapes préliminaires (si nécessaire)
Avant de pouvoir débuter le tutoriel, il est nécessaire d’effectuer quelques étapes pour configurer la machine virtuelle (VM).
Configurer Virtual Box:
1. Ouvrir Oracle Virtual Box : Menu démarrer → Tous les programmes → Oracle VM Virtual Box;
2. Ouvrir les paramètres de la machine virtuelle: Fichier (barre de menu) → Paramètres → Entrée (à gauche) → Machine virtuelle (onglet);
3. Changer la touche Hôte de Ctrl Droite à Alt Droite.
À n’importe quel moment vous pouvez utiliser les raccourcis suivants :
• Alt Droite – c : Passer en mode redimensionné (pour sortir de la VM)
• Alt Droite – f : Passer en mode plein écran.
Démarrer et configurer la machine virtuelle:
1. Dans Explorateur Windows : Disque local (c:) → MTI820 (répertoire) → MTI820 (cube bleu);
2. Connexion à la VM avec les paramètres suivants:
• Usager : sqladmin
• Mot de passe : Tempo123
3. Afficher la barre de menu de la VM : Alt Droite – c;
4. Périphériques (barre de menu) → Insérer l’image CD des Additions Invité;
5. Suivre les instructions pour l’installation (environ 3 minutes);
6. Redémarrer la VM à la fin de l’installation.
Dans Menu démarrer → Tous les programmes → Microsoft SQL Server 2014, vous trouverez les deux outils qui seront utilisés dans les tutoriels du cours :
• SQL Server 2014 Management Studio : pour voir les tables de la BD (AdventureWorks) et faire des requêtes;
• SQL Server Data Tools for Visual Studio 2013: pour créer des projets SSIS, SSAS et SSRS.
Créer un projet Analysis Services
1. File → New Projet, Analysis Services Multidimensional and Data Mining Project.
2. Renommer le projet Analysis Services Tutorial
Créer une Data Source
1. Dans le Solution Explorer (à droite), cliquer-droit sur Data Sources → New Data Source
2. Dans le Data Source Wizard, cliquer New et entrer les informations suivantes:
• Server name: MTI820
• Select or enter a database name: AdventureWorksDW2014 3. Cliquer sur Test connection,
4. Dans le Data Source Wizard, cliquer sur Next
5. Dans Impersonation Information, choisir: Use the service account 6. Cliquer sur Next, et nommer la Data Source: Adventure Works DW2014
Créer une Data Source View (DSV)
Les DSV permettent d'avoir les méta-données (e.g., schéma des tables) localement, sans avoir à maintenir de connexion avec la source.
1. Dans Solution Explorer, cliquer-droit sur Data Source Views → New Data Source View 2. Dans Select a Data Source, choisir Adventure Works DW2014, et cliquer sur Next 3. Avec le bouton >, ajouter les tables DimCustomer, DimDate, DimGeography,
DimProduct et FactInternetSales au menu Included objects. Cliquer sur Next et Finish.
4. Observer les éléments du GUI: Diagram, Tables, et Diagram Organiser
5. Changer le FriendlyName (retirer les Dim et Fact) en en cliquant-droit une table dans le menu Tables → properties
Définir une dimension
1. Dans Solution Explorer (à droite), cliquer-droit sur Dimension → New Dimensions 2. Dans Creation Method, choisir: Use existing table. Cliquer sur Next.
3. Dans Main table, choisir: Date. Cliquer sur Next.
4. Select Dimension Attributes, choisir:
• DateKey,
• FullDateAlternateKey,
• EnglishMonthName,
• CalendarQuarter,
• CalendarYear, et
• CalendarSemester
5. Dans la colonne Attribute type, faire les changements suivants:
• FullDateAlternateKey : Date → Calendar → Date
• EnglishMonthName : Date → Calendar → Month
• CalendarQuarter : Date → Calendar → Quarter
• CalendarYear : Date → Calendar → Year
• CalendarSemester : Date → Calendar → Half Year
6. Cliquer sur Next et visualiser la nouvelle dimension. NOTE: L'icone formé de 4 carrés représente une attribut-hiérarchie. Cliquer sur Finish.
Créer un cube
1. Dans Solution Explorer, cliquer-droit sur Cubes → New Cube 2. Dans Select Creation Method, choisir: Use existing tables
3. Dans Measure Group Tables, faire Suggest. La table InternetSales devrait être suggérée (cochée dans le menu Measure group tables). Cliquer sur Next.
4. Déselectionner les colonnes qui ne sont pas des mesures: Promotion Key, Currency Key, Sales Territory Key et Revision Number. Cliquer sur Next.
5. Dans Select Existing Dimensions, choisir la dimension existante Date (rien faire si elle est déjà sélectionnée). Cliquer sur Next.
6. Dans Select New Dimensions, déselectionner la table de faits: InternetSales. Les dimensions sélectionnées devraient être Customer et Product. Cliquer sur Next.
7. Renommer le cube Analysis Services Tutorial, et cliquer sur Finish.
8. Observer les menu Measures et Dimensions à gauche
Ajouter des attributs aux dimensions
1. Double-cliquer Customer.dim dans le Solution Explorer (dossier Dimensions, à droite) 2. Glisser-coller dans le menu Attribute (à gauche) les colonnes suivantes de la table
Customer du Data Source View (à droite):
• BirthDate, MaritalStatus, Gender, EmailAddress, YearlyIncome,TotalChildren, NumberChildrenAtHome, EnglishEducation, EnglishOccupation,
HouseOwnerFlag, NumberCarsOwned, Phone, DateFirstPurchase, CommuteDistance
3. Toujours dans Customer, ajouter les colonnes suivantes de Geography:
• City, StateProvinceName, EnglishCountryRegionName, PostalCode
4. Répéter la même opération pour la dimension Product avec les colonnes suivantes de la table Product:
• StandardCost, Color, SafetyStockLevel, ReorderPoint, ListPrice, Size,SizeRange, Weight, DaysToManufacture, ProductLine, DealerPrice, Class,Style, ModelName, StartDate, EndDate, Status
5. Revenir au Cube designer en double-cliquant le cube Analysis Services Tutorial dans le Solution Explorer
6. Observer les nouvelles dimensions et attributs
7. Observer que la dimension Date se retrouve 3 fois (role-playing dimension)
8. Observer les différents onglets du Cube Designer (Dimension Usage, Calculations, KPIs, Action, Partitions, Agregations, Perspectives, Translation, Browser)
9. Visualiser le code XMLA associé au cube: dans le Solution Explorer, cliquer-droit sur le cube Analysis Services Tutorial → View code
Modifier les mesures
1. Dans l'onglet Cube Structure, cliquer sur Show Measures Grid (5ème icône dans la barre d'icône)
2. Dans le menu Properties (à droite), changer la propriété FormatString comme suit
• OrderQuantity: #,#
• Unit Price, Extended Amount, Discount Amount, Product Standard Cost, Total Product Cost, Sales Amount, Tax Amt, Freight: Currency
• Unit Price Discount Pct: Percent
Créer des hiérarchies
1. Double-cliquer sur la dimension Customer dans le Solution Explorer.
2. Dans le menu Attributes (à gauche), renommer les attributs comme suit:
• English Country Region Name → Country-Region
• English Education → Education
• English Ocucpation → Occupation
• State Province Name → State-Province
3. Glisser-coller l'attribut Country-Region dans le menu Hierarchies (au centre) 4. Glisser-coller l'attribut State-Province dans la case <new-level>
5. Glisser-coller l'attribut City dans la case <new-level>
6. Renommer la hiérarchie Customer Geography (cliquer-droit la barre de nom → rename)
Déployer et explorer le cube
1. Dans le Solution Explorer, cliquer-droit le projet (niveau le plus haut) → Deploy Solution
2. Cliquer sur l'onglet Browser, et cliquer Reconnect (3ème icone dans la barre)
3. Dans Microsoft SQL Server 2014 Management Studio, choisir Analysis Services Engine (Server type), et localhost (Server name)
4. S’assurer que le nouveau cube est visible
5. Sélectionner le cube localhost → Databases → Cubes → Analysis Services Tutorial 6. Cliquer sur l'icône New query (en haut).
7. Entrer la requête suivante:
SELECT
{[Customer].[Gender].Members}*
{([Measures].[Sales Amount])} ON COLUMNS, {[Product].[Model Name].Members} ON ROWS FROM [Analysis Services Tutorial]
8. Exécuter la requête en cliquant sur l'icône "!" rougle (en haut)
Créer une métrique dérivée (Calculated Member)
1. Dans l'onglet Calculations, cliquer sur l'icône New Calculated Member (5ème icône dans la barre)
2. Changer le nom pour [Profit Margin]
3. Laisser la hiérarchie parent à Mesures 4. Entrer l'expression suivante dans Expression:
([Measures].[Sales Amount] -
([Measures].[Total Product Cost] + [Measures].[Tax Amt] + [Measures].[Freight])) /
[Measures].[Sales Amount]
NOTE: cette expression mesure le pourcentage du montant de la vente représentant un profit
5. Choisir "Percent" pour le Format String
6. Choisir "Internet Sales" pour le Associated Measure Group
Créer un KPI
1. Dans l'onglet KPI, cliquer sur l'icône New KPI (5eme icône dans la barre) 2. Changer le nom pour Gross Profit
3. Choisir "Internet Sales" pour le Associated Measure Group 4. Dans Value Expression:
[Measures].[Profit Margin]
5. Dans Goal Expression:
Case
When [Customer].[Country-Region]
Is [Customer].[Country-Region].[Canada]
Then .34
When [Customer].[Country-Region]
Is [Customer].[Country-Region].[United States]
Then .36
When [Customer].[Country-Region]
Is [Customer].[Country-Region].[France]
Then .32 Else .30 End
6. Dans Status Expression:
Case
When KpiValue("Gross Profit") / KpiGoal("Gross Profit") > .90 Then 1
When KpiValue("Gross Profit") / KpiGoal("Gross Profit") <= .90 And KpiValue("Gross Profit") / KpiGoal("Gross Profit") > .80 Then 0
Else -1 End
NOTE: le status correspond à -1=mauvais, 0=moyen et +1=bon 7. Dans Trend Expression:
Case
When IsEmpty(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year], 1, [Order Date].[Calendar Year])) Then 0
When [Measures].[Profit Margin] >
(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year], 1, [Order Date].[Calendar Year]), [Measures].[Profit Margin])
Then 1
When [Measures].[Profit Margin] =
(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year], 1, [Order Date].[Calendar Year]), [Measures].[Profit Margin])
Then 0 Else -1 End
NOTE: ParallelPeriod permet de retrouver la valeur à l'année précédente. Trend correspond à: -1=descendant, 0=neutre, +1=ascendant
8. Refaire un Deploy de la solution
9. Dans le SQL Server Management Studio, exécuter la requête:
SELECT
{KPIValue("Gross Profit"), KPIGoal("Gross Profit")} ON COLUMNS, {[Product].[Model Name].Members} ON ROWS
FROM [Analysis Services Tutorial]
NOTE: Il sera peut-être nécessaire de refaire la connexion au cube pour avoir les changements.