Entrepôts de données
Transcription
Entrepôts de données
Entrepôts de données Cours 2 et 3 : modélisation et interrogation Anne Doucet [email protected] 1 Plan • Modélisation des données – Concepts multidimensionnels – Opérations • Modèle de données ROLAP – Étoile, flocon, constellation – Transformation OLTP-ROLAP • Extensions de SQL pour les requêtes OLAP – Dimensions, agrégation, rollup, cube – Partition et Model 2 Données relationnelles Table des ventes : Produit Région Chiffre Soda Vins Entretien Soda Vins Ouest Est Centre Centre Centre 300 250 150 400 300 Calcul du total des ventes de soda ? requêtes, tables redondantes, attribut redondant 3 Données pour l’analyse grille des ventes : les axes correspondent à des attributs ayant des associations m-n Est Ouest Centre Sud Soda Vins Entretien 150 250 90 300 200 100 400 300 150 450 150 80 Total 490 600 850 680 Total 1300 900 420 2620 • facilité de lecture et de navigation • intégration des calculs 4 Concepts du modèle multidimensionnel • mesure = critère d’évaluation du processus décisionnel (ex : chiffre d’affaires, quantité en stock) • dimension = axe d’analyse associé à un indicateur, représentant un sujet d’intérêt (ex : temps, produit, localisation) • hiérarchie = décomposition d’une dimension en une arborescence de niveaux (ex : temps décomposé en mois, trimestre, année, ...) • attribut = caractéristique d’un niveau d’une hiérarchie (ex : prix d’un article) • agrégat = résultat d’un indicateur par rapport à des niveaux (ex : chiffre d’affaires du mois) 5 Cube multidimensionnel année trimestre mois janvier temps février 1998 1° trimestre mars • • • • • • Est France Ouest Strasbourg Nancy Rennes Nantes Sud Nord • • • classe Cap Cola Soda limonade Alimentation • • • Produit Centre article gamme Vins 6 Interrogation OLAP Principes: • Affichage d’une « face projetée » du cube multi-dimensionnel • Opérations de manipulations d’un cube • Visualisation des résultats 7 Exemple Projection : slicing : classe = alimentation et année=1998 Produit : classe alimentation Temps : année 1998 trimestre 1 Soda 1900 Vins …. trimestre 2 2000 trimestre 3 2200 trimestre 4 1300 …. 8 Exemple Pivotement : ajout de localisation Slicing : trimestre=4 et pays=France Produit : alimentation Temps : trimestre 4, année 1998 Localisation : pays France Soda Est Ouest Centre Sud Total 150 300 400 450 1300 9 Autre visualisation 1998 30 25 20 15 10 5 l o P EN Droit Philo Phys Info Avantage visuel Problème de multiplicité des diagrammes y S P C E Nombre de succès par matière (droit, philo, phys, info) et par école (Centrale ECP, Normale Sup ENS, Polytechnique) 10 Opérations sur le cube • Sur la structure – – – – – – • Rotate (pivot) Switch Split Nest/unnest Push/pull Slice Sur le contenu – Dice (sélection) – Roll-up (grain supérieur) – Drill-down (grain inférieur) • Entre cubes – Jointure – Opérations ensemblistes (union, intersection, différence) 11 Rotation (slicing) • Rotation (Pivot) : rotation par rapport à l’un des axes de dimension Droit Philo Phys Info 1996 18 24 7 1997 9 12 25 1998 Droit Philo Phys Info 15 8 15 18 18 5 5 ENS 15 9 8 8 25 5 5 5 17 8 12 12 6 Poly 25 22 12 18 18 ECP 7 7 ECP 7 18 5 5 ENS 15 9 12 5 8 Poly 25 22 12 18 12 8 18 17 25 22 12 18 1998 15 6 6 25 1997 <> <> <> 8 8 1996 <> <> <> pivot 12 Permutation de valeurs de dimensions (switch) Droit Philo Phys Info Droit Philo Info Phys 1996 18 24 7 15 15 1997 9 12 25 8 1998 8 7 18 5 5 25 5 18 5 5 ECP 7 17 8 12 ENS 15 9 8 12 6 Poly 25 22 12 18 18 1996 18 24 15 7 7 1997 9 12 8 25 25 1998 5 <> 7 18 5 5 18 5 5 ECP 7 <> <> ENS 15 9 12 8 8 <> Poly 25 22 18 12 12 switch SWITCH 13 Décomposition (split) Droit Philo Phys Info 1996 18 24 7 15 15 1997 9 12 25 8 1998 8 25 18 7 5 5 7 18 5 5 5 17 ECP 8 12 15 9 8 12 6 ENS Poly Info 25 22 1998 1997 1996 12 Droit Spl it 18 18 Phys 1998 1997 1996 1998 1997 1996 ECP 7 9 18 ENS 15 <> <> Poly 25 Philo <> <> 1998 1997 1996 ECP 5 8 15 ECP 5 25 7 ECP 18 12 24 ENS 12 17 25 ENS 8 <> <> ENS 9 <> <> 6 8 Poly 12 Poly 22 <> <> Poly 18 <> <> 14 Imbrication/désimbrication (nest/unnest) Droit Phys Info 1998 1996 1997 1998 UNNEST Poly 1996 1997 ENS 1997 1998 ECP 1998 1996 NEST 1996 1997 Droit Philo Phys Info 1996 18 7 15 24 1997 9 15 8 25 12 1998 8 25 7 18 5 5 7 18 5 5 5 17 ECP 8 12 15 9 8 12 ENS 6 Poly 25 22 12 18 18 Philo 18 9 7 24 12 7 25 5 15 8 <> <> 15 <> <> 9 <> <> 8 <> <> 12 <> <> 25 <> <> 22 <> <> 12 <> <> 18 18 5 15 Concaténation (push/pull) Droit Philo Phys Info 1996 18 24 15 7 1997 15 25 8 9 12 1998 8 18 5 7 5 25 7 18 5 5 5 17 ECP 8 9 8 12 12 6 ENS 15 Poly 25 22 12 18 18 Push Pull Droit Philo Phys Info ECP 1996 18 1997 9 1998 7 ENS 1996<> 1997<> 1998 15 1996<> 1997<> 1998 9 1996 <> 1997<> 1998 8 1996<> 1997<> 1998 12 Poly 1996 <> 1997 <> 1998 25 1996 <> 1997 <> 1998 22 1996<> 1997 <> 1998 12 1996 <> 1997 <> 1998 18 1996 24 1997 12 1998 18 1996 7 1997 25 1998 5 1996 15 1997 8 1998 5 16 Projection (slice) S’applique sur les valeurs des dimensions SLICE Droit Philo Phys Info 1996 18 15 24 7 1997 9 1998 8 15 12 25 8 5 7 18 5 25 5 7 18 5 5 17 8 ECP 15 9 8 12 12 6 ENS Poly 25 22 12 18 18 Info 1996 15 1997 8 1998 5 25 5 17 8 ECP ENS Poly 12 6 18 Droit Philo SLICE 1997 9 12 1998 18 12 7 7 18 18 <> ECP ENS 15 9 9 17 Projection agrégative Matière Droit Philo Phys Info 1996 18 24 7 15 1997 9 12 25 8 15 1998 8 25 18 7 5 5 7 18 5 5 5 17 ECP 8 12 9 8 12 6 ENS 15 Poly 25 22 12 Slice 1996 64 1997 54 1998 35 ECP 35 ENS 44 Poly 77 18 18 18 Sélection (Dice) S’applique sur les valeurs des cellules Droit Philo Phys Info 1996 18 24 7 15 1997 9 12 25 8 15 1998 8 25 18 7 5 5 7 18 5 5 5 17 ECP 8 12 9 8 12 6 ENS 15 Poly 25 22 12 18 18 Droit Philo Phys Info 1996 18 24 15 1997 15 25 1998 18 25 18 17 ECP ENS 15 Poly 25 22 18 18 19 Roll up/Drill-down ll-u o R p e) d o ri é P ( Droit Philo Phys Info 1996 18 24 7 15 1997 9 15 12 25 8 1998 8 25 18 5 5 7 7 18 5 5 5 17 ECP 8 12 9 8 12 ENS 15 6 Poly 25 22 12 18 18 Droit Philo Phys Info Période 11,3 18 12,3 9,3 9,3 ECP 11,3 18 12,3 9,3 ENS <> <> <> 18 18 Poly <> <> Roll-u <> 10,6 10,6 p (*.) 13,5 5 3, 1 13,5 Droit Philo Phys Info u llRo Ra p( ) ng 1996 16 1997 10,3 16 1998 15,6 16,3 8,3 11,6 15,6 16,3 8,3 11,6 Ecole Rang A 20 Composition d’opérations Droit Philo Phys Info Dice Droit Philo Phys Info 1996 18 24 7 15 1997 9 12 25 8 15 1998 8 25 18 7 5 5 7 18 5 5 5 17 ECP 8 9 8 12 12 6 ENS 15 Poly 25 22 12 1996 1997 1998 ECP ENS Poly 25 Roll-up ECP 15 15 25 18 18 25 17 18 18 22 Philo 1996 1997 1998 18 18 22 24 15 18 18 22 18 Slice 24 24 18 ENS Poly 22 21 Jointure Droit Philo Phys Info 1996 18 24 7 15 15 1997 9 12 25 8 1998 8 25 18 7 5 5 5 7 18 5 5 ECP 17 8 15 9 8 12 12 6 ENS Poly 25 22 12 18 1996 80 80 1997 75 1998 60 75 76 60 60 80 72 ECP 70 70 70 ENS Poly 18 Droit Philo Phys Info 18 80 24 80 7 80 15 80 80 1997 9 75 12 75 25 75 8 75 1998 75 7 60 18 60 5 60 5 60 76 7 60 18 60 5 60 5 60 60 80 72 ECP 15 70 9 70 8 70 12 70 70 70 ENS 25 65 22 65 12 65 18 65 65 Poly 1996 65 65 22 Union Droit Philo Phys Info 1996 18 1997 9 12 1998 18 7 7 18 ECP 9 ENS 15 Poly 25 22 24 7 15 25 5 5 15 8 8 5 5 5 8 17 8 12 12 6 12 18 18 Droit Philo Phys Info 1996 15 17 717 25 1997 7 25 14 21 12 1998 12 25 12 23 7 16 16 12 23 7 16 20 U1 12 12 U2 20 8 27 42 16 U3 22 28 32 Droit Philo Phys Info 25 1996 18 24 7 15 15 1997 9 12 25 8 1998 8 25 18 7 5 5 5 7 18 5 5 17 ECP Droit Philo Phys Info 8 12 159 178 717 ENS 15 12 25 6 25 7 14 21 12 18 Poly 25 22 12 18 12 25 23 12 7 16 16 12 23 7 16 20 12 U1 12 U2 20 8 27 42 16 U3 22 28 32 27 27 27 27 Universités U1, U2, U3 23 Représentation du cube • Deux façons de représenter le cube : – Le modèle ROLAP : le serveur OLAP traduit les opérations sur le cube en opérations relationnelles. – Le modèle MOLAP stocke la BD multidimensionnelle dans des structures non relationnelles. • La majorité des serveurs OLAP suivent le modèle ROLAP. • Objectifs : – Dénormaliser (minimiser les jointures) – Résumés (effectuer des précalculs) – Partitionnement vertical (diminuer la taille des tables) • Trois modèles : étoile, flocon, constellation 24 Modèle en étoile Product Table Product_id Product_desc … – Une table « fact » par indicateur – Une table dénormalisée pour chaque dimension – associations en étoile entre les tables « fact » et « dimension » Time Table Day_id Month_id Period_id Year_id Store Table Store_id District_id ... Sales Fact Table Product_id Store_id Item_id Day_id Sales_dollars Sales_units ... Item Table Item_id Item_desc ... 25 Choix des tables « fact » et « dimension » • Analyse des requêtes – attributs « group-by » indiquent les dimensions – attributs agrégés indiquent les mesures – attributs « where » sont les attributs des tables « dimension » Exemple : select sale.store_id,sale_product_id, sum(sale.price) from product, sale where product.product_id=sale.product_id and product.product_desc = « clothes » group by store_id, product_id 26 Choix des tables • Analyse des procédés métier – table fait est dérivée d’une activité liée à un procédé métier – les attributs de la table fait sont des attributs clés qui identifient l’activité plus des mesures – les dimensions sont dérivées des attributs clés des tables faits 27 Modèle en flocon Product Table Product_id Product_desc Store Table Store_id Store_desc District_id District Table District_id District_desc Sales Fact Table Item_id Store_id Sales_dollars Sales_units Time Table Week_id Period_id Year_id Item Table Item_id Item_desc Dept_id Dept Table Dept_id Dept_desc Mgr_id Mgr Table Dept_id Mgr_id Mgr_name 28 Avantages/Inconvénients • Modèle en étoile : – évite jointures par dénormalisation • Modèle en flocons – chargement/rafraîchissement plus rapide 29 Modèle en constellation Warehouse Table Warehouse_id Warehouse_loc Product Table Product_id Product_desc Store Table Store_id District_id Sales Fact Table Item_id Product_id Week_id Store_id Sales_dollars Sales_units Inventory Fact Table Product_id Warehouse_id Week_id Cost_dollars Qty_on_hand Time Table Week_id Period_id Year_id Item Table Item_id Dept_id 30 Temps dans les dimensions Fact Table Day_id Fact Table Day_id Fact Table Day_id Time Dimension Day_id Month_id Quarter_id Half_year_id Year_id Time Dimension Day_id Month_id Quarter_id Half_year_id Year_id Fiscal_month_id Fiscal_ quarter_id Fiscal_ half_year_id Fiscal_ year_id Time Dimension Day_id Month_id Quarter_id Half_year_id Year_id 31 Modélisation de la dimension Temps • Gestion du changement des valeurs dans les dimensions • modifier les données : – perte de l’historique – perte des contraintes référentielles • créer de nouveaux tuples : – ID doit inclure une notion de version – complique la sémantique des requêtes 32 Versions dans les dimensions Customer History Table Cust_id Cust_name Version 1 ABC Co 1 1 ABC Ltd 2 2 XYZ Inc 1 Customer Table Cust_id 1 2 3 Sales Fact Table Unit Sell Price Dollar Sales Unit Sales Dollar Cost 33 Difficultés de la modélisation • Choix des attributs mesures – mesures vs propriétés – caractéristiques qui déterminent requêtes possibles • Représentation des agrégats – granularité des données dans les tables « facts » – modélisation des agrégats – choix des agrégats 34 Mesures et propriétés • Propriété : attribut d’une dimension représentant une constante ou une valeur discrète – couleur – prix d’un article en catalogue • Mesure : attribut d’une table « fact » représentant une valeur à variation continue – solde – nombre total des articles commandés 35 Propriétés des mesures • Mesures additives, semi-additives : peuvent être sommées, moyennées, etc, selon toutes ou certaines dimensions. Exemple : quantité, bénéfice, coût, ... • Mesures non additives : doivent être traitées de façon atomique. Exemple : quantité cumulée (solde, etc) • Les mesures qui s’accumulent avec le temps peuvent seulement être moyennées par rapport au temps – Inventaire de chaque produit – solde sur un compte en banque 36 Exemples de mesures Time Dimension Additive Product Dimension Sales Fact Table Time_key Product_key Store_key Promotion_key Quantity_sold* Revenue* Cost* Customer Count Store Dimension Semi-Additive Promotion Dimension Cost by Product + Store + Time Cost by Product + Promotion + Time Revenue by Product + Promotion + Time Revenue by Product + Promotion + Store + Time . . . 37 Granularité des données • Analyse d’un métier au niveau de ses transactions – comparaison des ventes entre matin et après-midi – périodes de pointe des demandes de renseignement • Nécessite une granularité fine – ventes par produit, par client, par minute, par magasin – demandes par produit, par client, par minute 38 Granularité des données (2) • Analyse d’un métier par tranche de temps – variations des demandes de renseignements sur les jours du mois • Nécessite une agrégation périodique des données – demandes par produit, par nombre de clients, par jour 39 Modélisation des agrégats • agrégats : attributs calculés à partir d’attributs mesures et de fonction de calcul. En général, modélisé par des tables « fact » spécifiques • problème : choix de ces tables ? – Accélère le traitement des requêtes OLAP – ralentit le rafraîchissement de l’entrepôt et augmente la taille de l’entrepôt 40 Table fact avec agrégat Customer Table Cust_id Cust_name Store Table Store_id District_id Sales Fact Table Unit Sell Price Dollar Sales Unit Sales Dollar Cost Time Table Week_id Period_id Year_id Summary for Product, Store, and Time for all Customers Customer Summary Cust_id Total Sales Highest Sales Value Average Sales Product Table Product_id Product_desc 41 Choix des agrégats • But: optimisation des requêtes très coûteuses en temps d’exécution • problème : inflation du nombre d ’agrégats • solution : – les agrégats sont réutilisables pour plusieurs requêtes, même partiellement – choisir les meilleurs agrégats communs à l’ensemble des requêtes 42 Réutilisation des agrégats SALES FACTS Sales$ Region 10,000 North 12,000 South 11,000 North 15,000 West 18,000 South 20,000 North 10,000 East 2,000 West Month Jan 97 Feb 97 Jan 97 Mar 97 Feb 97 Jan 97 Jan 97 Mar 97 SALES BY MONTH/REGION Month Region Tot_Sales$ Jan 97 North 41,000 Jan 97 East 10,000 Feb 97 South 40,000 Mar 97 West 17,000 SALES BY MONTH Month Tot_Sales Jan 97 51,000 Feb 97 40,000 Mar 97 17,000 43 Méthodes de conception Dimensions de la démarche • descendante : on part d ’un schéma conceptuel du DW, puis on produit un schéma ROLAP, puis on définit la traduction des sources dans ce schéma • ascendante : on part des schémas des sources qu’on intègre progressivement pour obtenir un schéma global structuré selon un modèle ROLAP • local vers global : débuter par des data marts puis passer à un entrepôt global • global vers local : débuter par le DW global puis définir des entrepôts locaux 44 Descendante vs ascendante • Approche descendante – principe : concevoir un schéma d’entreprise intégré (Modèle d’entreprise) dont les schémas des sources seront dérivés – nécessite outils de modélisation – approche robuste mais lente et coûteuse • Approche ascendante – principe : intégrer les schémas des sources de façon à dériver un schéma global – approche pragmatique mais évolution difficile 45 Approche ascendante 1. Intégration de schémas conceptuels hétérogènes en un schéma global – – – – pré-intégration comparaison de schémas conformance de schémas fusion et restructuration 2. Transformation d’un schéma opérationnel en un schéma ROLAP 46 Transformation OLTP-ROLAP • Méthode générale – – – – – – éliminer les attributs inutiles dans les sources isoler les dimensions et les faits estampiller les données choix et modélisation des mesures arrangement en modèle ROLAP enrichissement par données contextuelles • Exemple : – transformation d’un schéma de type TPC-C 47 Etape 1 : élimination de données Order Ord ID Ord Sales ID Cust ID Sales Location Order Date -Date Filled -Comments -Routing -Ship Address Customer Cust ID Cust Name Address Phone -Created By -Credit Checked By -Credit Clerk ID Salesman Salesman ID Manager ID Projected Sales -Created By -Hire Date Order Item Ord ID Line No Product ID Quantity Unit Price Item Total Product Product ID Class ID Category ID Vendor ID SKU -Product Status -Created By 48 Etape 2 : ajout du temps Order Ord ID Ord Sales ID Cust ID Sales Location Order Date Customer Cust ID Cust Name Address Phone +Snapshot Date Salesman Salesman ID Manager ID Projected Sales +Snapshot Date Order Item Ord ID Line No Product ID Quantity Unit Price Item Total +Snapshot Date Product Product ID Class ID Category ID Vendor ID SKU +Snapshot Date 49 Etape 3: choix des mesures Order Ord ID Ord Sales ID Cust ID Sales Location Order Date +Total Order Value +Discount Applied Customer Cust ID Cust Name Address Phone Snapshot Date +Total Cust Orders Salesman Salesman ID Manager ID Projected Sales Snapshot Date +Total Sales Orders Order Item Ord ID Line No Product ID Quantity Unit Price Item Total Snapshot Date Product Product ID Class ID Category ID Vendor ID SKU Snapshot Date +Total Products Ordered 50 Etape 4 : ajout de données Order Ord ID Cust ID Ord Sales ID Sales Location Order Date Total Order Value Discount Applied Customer Cust ID Cust Name Address Phone Snapshot Date Total Cust Orders Salesman Salesman ID Manager ID Projected Sales Snapshot Date Total Sales Orders Order Item Ord ID Line No Product ID Quantity Unit Price Item Total Snapshot Date +Warehouse ID +Order Lead Time +Stock Out +Stock Level Product Product ID Class ID Category ID Vendor ID SKU Snapshot Date Total Products Ordered +Inventory Item +Product ID +Warehouse ID +Order Lead Time +Stock Out +Stock Level 51 Etape 5: réarrangement Order Ord ID Cust ID Ord Sales ID Sales Location Order Date Total Order Value Discount Applied Customer Cust ID Cust Name Snapshot Date Salesman Salesman ID Manager ID Snapshot Date Customer Detail Cust ID Snapshot Date Address Phone Total Orders Salesman History Salesman ID Snapshot Date Projected Sales Total Orders Order Item Ord ID Line No Product ID Quantity Unit Price Item Total Snapshot Date Warehouse ID Order Lead Time Stock Out Stock Level Product Product ID Class ID Category ID Vendor ID SKU Snapshot Date Total Products Ordered 52 Etape 5 (suite) Order Ord ID Cust ID Ord Sales ID Sales Location Order Date Total Order Value Discount Applied +Line No +Product ID +Quantity +Unit Price +Item Total +Warehouse ID +Order Lead Time +Stock Out +Stock Level Customer Cust ID Cust Name Snapshot Date Salesman Salesman ID Manager ID Snapshot Date Customer Detail Cust ID Snapshot Date Address Phone Total Orders Salesman History Salesman ID Snapshot Date Projected Sales Total Orders Order Item Ord ID Line No Product ID Quantity Unit Price Item Total Snapshot Date Warehouse ID Order Lead Time Stock Out Stock Level Product Product ID Class ID Category ID Vendor ID SKU Snapshot Date Total Products Ordered 53 Etape 6 : ajout des données de contexte +Sales Location +Region ID +Effective From +Effective To +Contains Region ID +Region Description Product Product ID Class ID Category ID Vendor ID SKU Snapshot Date Total Products Ordered Order Ord ID Cust ID Ord Sales ID Sales Location (Region ID) Order Date Total Order Value Discount Applied Line No Product ID Quantity Unit Price Item Total Warehouse ID Order Lead Time Stock Out Stock Level Salesman History Salesman ID Snapshot Date Projected Sales Total Orders Salesman Salesman ID Manager ID Snapshot Date Customer Cust ID Cust Name Snapshot Date Customer Detail Cust ID Snapshot Date Address Phone Total Orders 54 Approche descendante Problème : on dispose d’un schéma d’entrepôt ROLAP = ens. de vues. Pour chaque vue de ce schéma, il faut spécifier sa construction à partir des sources. Exemple d’approche possible : 1. Décrire les propriétés sémantiques des sources et des vues 2. Pour chaque vue, – déterminer les relations source pertinentes – définir les opérations pertinentes entre ces relations – choisir les requêtes à générer 55 Extensions de SQL pour OLAP • Plusieurs propositions d’extensions : – SQL : Dimension, Agrégation, Roll up, Cube – Densification – SQL Model (spreadsheet) 56 SQL (Oracle) Définition des dimensions • Une dimension est définie par – des relations : table + attributs un attribut = un niveau – la hiérarchie entre les niveaux : arbre (ou branche) – les dépendances fonctionnelles entre les attributs • Avantages – Cohérence des données – Traitement plus efficace des requêtes d’agrégation 57 Dimensions dans un schéma en étoile Exemple: la dimension des catégories de produits CREATE DIMENSION products_dim LEVEL product IS (products.prod_id) LEVEL subcategory IS (products.prod_subcategory) LEVEL category IS (products.prod_category) HIERARCHY prod_rollup ( product CHILD OF subcategory CHILD OF category) ATTRIBUTE product DETERMINES (prod_name, prod_desc, prod_min_price, …) ATTRIBUTE subcategory DETERMINES (prod_subcategory, prod_subcategory_desc) ATTRIBUTE category DETERMINES (prod_category, prod_category_desc); 58 Dimensions dans un schéma en flocon Définir une dimension à partir de plusieurs relations Clients (cl_id, cl_ville, cl_région, cl_pays) Pays (p_id, p.continent) CREATE DIMENSION clients_dim LEVEL client IS (cl_id) LEVEL ville IS (cl_ville) LEVEL région IS (cl_région) LEVEL pays IS (p_id) LEVEL continent IS (p_continent) HIERARCHY geographic_rollup ( client CHILD OF ville CHILD OF région CHILD OF pays CHILD OF continent JOIN KEY (cl_pays) REFERENCES Pays); 59 Agrégation avec SQL : GROUP BY Regroupement suivant n dimensions GROUP BY d1, … , dn Un groupe contient tous les faits qui ont les mêmes valeurs pour (d1, … , dn). Les groupes sont disjoints. Clause SELECT : fonction d’agrégation sum, avg, count, min, max, … Résultat: un n-uplet par groupe Exemple : Sales(StoreID, ItemID, CustID, qty, price) SELECT StoreID, ItemID, CustID, SUM(price) FROM Sales GROUP BY StoreID,ItemID,CustID 60 Opérateur ROLLUP Syntaxe: GROUP BY [D ] ROLLUP(D’) D et D’ sont des listes de dimensions d1 … dn Agrégation sur n+1 niveaux de regroupements Niveau 1 : group by d1 … dn-1 dn Niveau 2 : group by d1 … dn-1 … Niveau n : group by d1 Niveau n+1 : un seul groupe = la table des faits toute entière Rollup partiel : moins de niveaux GROUP BY D ROLLUP(D’) Ex: group by e1 rollup (e2, e3) crée les sous-totaux (e1,e2,e3), (e1, e2) et (e1) 61 Exemple de ROLLUP(1) Sales(StoreID, ItemID, CustID, qty, price) Requête SELECT StoreID, ItemID, CustID, SUM(price) FROM Sales GROUP BY ROLLUP(StoreID,ItemID,CustID) Résultat [s, i, c, p] ∈ Résultat [s1, i1, c1, 2] [s1,i1,c3, 1] … [s1, i1,null, 100] [s1, i2, null, 250] … total par mag. par art. [s1, null, null, 4000 ] … total par magasin [null, null, null, 100 000 000] total général mais pas les n-uplets suivants : [s1, null, c1, 30] … [null, null, c1, 200] … total par mag. par client total par client 62 Exemple de ROLLUP (2) Sales(RegionID, StoreID, ClerkID, hourlyPay) Requête SELECT RegionID, StoreID, ClerkID, AVG(hourlyPay) FROM Sales GROUP BY RegionID, ROLLUP(StoreID, ClerkID), Résultat … 63 Exemple de ROLLUP (3) SELECT Type, Store, SUM(Number) FROM Pets GROUP BY type,store Type Dog Cat Turtle Dog Store Miami Miami Tampa Tampa Number 12 18 4 14 Cat Dog Turtle Naples Naples Naples 9 5 1 Résultat avec ROLLUP Type Cat Cat Cat Dog Store Miami Naples NULL Miami Number 18 9 27 12 Dog Dog Dog Turtle Turtle Turtle NULL Naples Tampa NULL Naples Tampa NULL NULL 5 14 31 1 4 5 63 64 Opérateur CUBE Syntaxe: GROUP BY [D] CUBE(D’) D et D’ sont des listes de dimensions d1 … dn Agrégation sur tous les niveaux de regroupements par face, arrête, sommet du cube (2n groupes) group by d1 group by d1, d2 … group by d1, …dn group by d2 group by d1, d2 group by d3 group by d1, d3 … … Cube partiel : moins de niveaux GROUP BY D CUBE(D’) 65 Exemple de CUBE Cat Miami 18 SELECT Type, Store, SUM(Number) FROM Pets GROUP BY CUBE (type, store) Cat Naples 9 Cat NULL 27 Dog Miami 12 Dog Naples 5 Exercices • Ecrire en SQL une requête équivalente (sans utiliser cube) • Combien de clauses select sontelles nécessaires pour obtenir un cube de dimension n ? Dog Tampa 14 Dog NULL 31 Turtle Naples 1 Turtle Tampa 4 Turtle NULL 5 NULL NULL 63 NULL Miami 30 NULL Naples 15 NULL Tampa 18 66 Extension PARTITION : Densification Principe Obtenir un cube sans ‘trous’. Ajouter les agrégats dont la valeur est nulle. Cube + jointure externe sur chaque dimension Syntaxe PARTITION BY D [LEFT | RIGHT ] OUTER JOIN table ON pred D, table : dimensions pred : prédicat de jointure Avantages: jointure plus efficace, moins de tri. 67 Extension MODEL : Principes • Intuition: décrire une requête comme une feuille de calcul contenant des formules dans des cellules. • Relation avec N attributs ⇔ tableau à N dimensions • Définir la valeur d’une cellule par une formule. • Formule récursive, condition d’arrêt et de convergence • Requête avec une nouvelle clause pour définir les formules. • La nouvelle clause supporte : le partitionnement des données, mises à jour, prédicats de jointure (a=b) • Simplifie l’écriture des requêtes OLAP (what if,…) 68 Evaluation d’une requête OLAP • Evaluation de la nouvelle clause – après les clauses select, where, group by – avant order by – produit une relation : l’imbrication de requêtes est possible • Traitement efficace de la nouvelle clause – en parallèle pour chaque partition – une seule structure d’accès pour traiter plusieurs opérations de jointure et d’union 69 Syntaxe d’une requête OLAP SELECT … FROM … WHERE … GROUP BY …. MODEL PBY (cols) DBY (cols) MEA (cols) { <regles> * } PBY (p1, …) : partition by ⇒ découpage en partitions DBY (d1, …) : dimension by : nom des dimensions MEA (m) : mesure, ensemble de valeurs: m[…] <regles>: affectation m[prédicat] = f(m) • prédicat: égalité, inégalité, logique • f(m) : formule algébrique 70 Déroulement d’une requête Mapping des colonnes vers des entités Model Country Partition Product Dimension Year Dimension Sales Measure Règles Sales(Prod1, 2002) = Sales(Prod1,2000) + Sales(Prod1,2001) Sales(Prod2, 2002) = Sales(Prod2, 2000) + Sales(Prod2, 2001) 71 Résultat Country Product Year Sales Partition Dimension Dimension Measure A Prod1 2000 10 A Prod1 2001 15 A Prod2 2000 12 A Prod2 2001 16 B Prod1 2000 21 B Prod1 2001 23 B Prod2 2000 28 B Prod2 2001 29 A Prod1 2002 25 A Prod2 2002 28 B Prod1 2002 44 B Prod2 2002 57 Données d’origine Résultat des règles 72 Model : exemple 1 Relation f: table de faits Attributs région r, produit p, année a, ventes v SELECT r, p, a, v FROM f MODEL PBY (r) DBY (p, a) MEA (v) { v[p=’dvd’, a=2005] = v[p=’dvd’, a=2004] * 1.6, v[p=’vcr’, a=2005] = v[p=’vcr’, a=2003] + v[p=’vcr’, a=2004], v[p=’tv’, a=2005] = avg(v)[p=’tv’, 1997<a<2005] } Quelles seraient les ventes en 2005 tq: - DVD : augmentation de 60% par rapport à 2004 - Caméscope : somme des ventes 2003 et 2004 - TV: moyenne de 1998 à 2004 73 Model : exemple 2 Utilisation de la fonction cv() : current value MODEL DBY (r, p, a) MEA (v) { v[‘ouest', *, a>2001] = 1.2*v[cv(r), cv(p), a=cv(t)-1] } Quelles seraient les ventes, après 2001, de tous les produits de la région Ouest, telles que : l’augmentation annuelle pour chaque produit soit de 20% 74