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.