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.