Note: You are viewing an old revision of this page. View the current version.

Cube : manipulation de données multi-dimensionnellles

L'objectif de ce TD/TME est de savoir calculer, transformer et interroger un cube en SQL

Documentation

Voir le cours et le livre Data Warehousing, chapitre 20 SQL for aggregation : les opérateurs rollup, cube et la fonction grouping. Lire également les questions fréquentes ci-dessous.

Présentation

On considère la base de données de TPC-H (voir TpcH)

Soit le cube C1 représentant la somme des ventes d'articles commandés, selon 3 dimensions :

Les niveaux de la hiérarchie des produits sont : nom et type (plusieurs produits par type).
Les niveaux de la hiérarchie des fournisseurs sont : nom, pays, continent
Les niveaux de la hiérarchie de la date sont : jour, mois, année

Le cube C1 contient des données sur les ventes, au niveau le plus détaillé de chaque dimension (ie. nom de produit, nom de fournisseur et jour).

Question 1 : Opérations algébriques

On considère le cube C2 obtenu à partir de C1 tel que :

Les valeurs des cellules de C2 représentent la somme des ventes quelle que soit la date.

a) Quelles sont, d'après le cours, les opérations à appliquer sur C1 pour obtenir C2 ? Donner l'ordre dans lequel les opérations sont appliquées

b) Donner la requête SQL dont le résultat contient toutes les valeurs de C2.

Question 2 : Navigation

On suppose qu'une application graphique permet de naviguer, à partir de C2, au travers des différents niveaux hiérarchiques de la dimension fournisseurs. Pour que la navigation soit fluide, l'application pré-calcule (en SQL) toutes les données du cube, rencontrées lors de cette navigation.

a) Exprimer en SQL la requête posée par l'application. Le résultat de la requête doit contenir toutes les données du cube, à tous les niveaux de la dimension fournisseurs. Utiliser le mot clé rollup

b) Idem sans utiliser ni rollup ni cube, mais union.

c) Idem en utilisant cube. Obtenez-vous un résultat équivalent ? Décrire précisément la différence de résultat entre les requêtes a) et c)

Question 3: Présentation du résultat

a) On considère la requête 2.a). Compléter la projection (clause select) pour marquer chaque tuple avec le niveau de hiérarchie auquel il se situe. Afin de repérer le sous-total pour un type de produit, ajouter des attributs nommés STF, STP et STR, TM :

Utiliser la fonction grouping()

b) Compléter la requête avec les sous-totaux tous types de produits confondus (sous total par pays et région, et le total mondial).

Question 4: Cube en 3D avec dimension temporelle

On veut calculer les données de C1 et celles de tous les cubes obtenus par navigation sur les 3 dimensions : produit, fournisseur, date. Pour cela on définit la vue :

a) Définir en SQL la vue Date_commande

b) Expliquer comment calculer toutes les données souhaitées en utilisant Date_commande.

Question 5: Interrogation d'un cube

a) Définir en SQL une vue représentant C2 et les cubes obtenus par navigation sur les 3 niveaux de la dimension fournisseur et les 2 niveaux de la dimension produits.

b) Soit la requête R1 donnant le total des ventes effectuées en afrique.

c) Les requêtes R1 er R2 sont-elle traitées de manière identique par le SGBD ?

d) Donner une expression simplifiée de R2. Expliquer les transformations algébriques que vous appliquez sur R2 pour la simplifier.

e) Donner un exemple de requête qui aggrège des données de la base TPC-H mais qu'il est impossible de poser sur la vue Les_cubes.

Questions fréquentes


LesTme, LesCours, Accueil