Projet Fantastic : Mise en place de la zone de traitement

L'objectif est à présent de créer la BDT en RO. Les noms des tables et vues seront préfixés :

  • f_ dans le schéma bdt

  • ou f_bdt_ si vous ne disposez que d'un seul schéma pour toutes vos BD.

Créez une table RO f_bdt_catalogue avec les attributs de la vue catalogue f_bde_catalogue et une méthode pour chaque attribut de la dimension produit..

Les méthodes ne sont pas implémentées pour le moment.

Pensez à déclarer les contraintes et index explicitement pour pouvoir les désactiver plus tard, avant les chargements massifs.

Créez une table RO f_bdt_magasin destinée à recevoir la jointure des tables associées à marketing.ods et departementsInsee2003.txt.

Les départements ne sont pas identifiés exactement de la même façon dans les deux tables f_bde_dpt et f_bde_marketing, il n'est donc pas possible des les joindre directement.

Une solution consiste à créer deux vues f_bdt_dpt et f_bdt_marketing qui vont permettre d'ajuster les valeurs avant la jointure. Par exemple :

  • La vue f_bdt_dpt renvoie directement les valeurs de f_bde_dpt (on peut éventuellement s'en passer)

  • La vue f_bdt_marketing renvoie des valeurs corrigées qui peuvent être jointes à f_bdt_dpt

D'autres solutions auraient été :

  • De gérer la modification directement dans la requête INSERT vers f_bdt_magasin

  • De faire l'insertion dans f_bdt_magasin via un script PL/SQL (qui traite les cas problématiques)

  • De copier les données de f_bde_marketing dans une table f_bdt_marketing, d'exécuter un script corrigeant les données, puis de faire le INSERT

  • ...

Pour traiter le problème des numéros de département qui sont de type 1, 2 ... au lieu de 01, 02... on peut utiliser un CASE dans un SELECT :

SELECT
CASE WHEN TO_NUMBER(dpt)<10 THEN '0'||TO_NUMBER(dpt) ELSE dpt END AS dpt,
...
FROM f_bde_marketing;

Créez une table RO f_bdt_date avec un seul attribut qui recevra les valeurs d'un select distinct dat ... depuis la table externe permettant d'accéder à data.csv.

Créez une table RO f_bdt_vente pour alimenter la table des faits.

Écrivez la procédure d'import BDE->BDT en suivant bien les étapes du processus de chargement.

Désactivez vos contraintes et index avant le chargement.

Vérifiez votre import (pas de rejet, vérification du nombre de lignes...)

Penser à valider votre transaction (COMMIT).

Implémentez une première version des méthodes qui ne fera aucun traitement pour le moment : la méthode retourne soit un attribut sans transformation, soit une constante si ce n'est pas possible.

AccueilExercice : Projet Fantastic : Mise en place de la zone de traitement< PrécédentSuivant >