-
Question sur le T de ETL
Bonjour,
Je suis actuellement en train de mettre en place une base de données.
Je récupère mes données à partir d'un fichier plat que j’envoie dans la table "TEMP" (ma table temporaire) et jusqu’à présent je faisais des Transformations directement sur ma table TEMP avant de charger les données dans mon modèle de base de données définitive...
Depuis peu, je me demande si c'est bien la démarche à suivre, à savoir est ce qu'il faut bien modifier mes données directement sur la table TEMP ou faut-il modifier les données pendant le chargement dans mes tables définitives (tables des faits et dimensions) ?
Exemple :
- Si je veux supprimer les erreurs contenues dans mon fichier source est ce que je dois faire une requête sur la table TEMP puis une fois ma table TEMP propre je charge les données ?
Ou une fois que j'ai extrait mes données dans la table TEMP, je dois faire une sorte de filtre afin que les erreurs soient supprimées et en mm temps injecter... ?
Autre exemple :
- Je voudrais ajouter une chaine de caractère ("voiture" ou "moto") dans une nouvelle colonne TYPE_DESC à partir d'une colonne TYPE contenant la lettre V pour les voitures et M pour les Motos... Mais je ne sais si je dois créer cette colonne en premier dans ma table TEMP pour pouvoir ensuite faire une jointure afin d’insérer les données dans ma dimension TYPE_DE_VEHICULE ?
ou autrement ?
En résumé je me demande si j'ai "le droit" (je me doute bien que je peu faire ce que je veux :) ) d'ajouter des champs dans ma table temporaire ou si il ne faut pas y toucher ?
J'avais cru comprendre que l'on devait préparer les données dans la Staging Area puis charger les données dans le Data warehouse donc je suppose que les seuls modifications a faire sont à faire dans la Staging Area ?
A partir de mon DW, je ne feraique créer mon hypercube puis créer mes vues et mes agrégats ?
Est-il possible que quelqu'un puisse éclairer ma lanterne sur toutes ces questions ? :)
Merci beaucoup d'avance !
-
Le principe de l'ETL, notamment avec SSIS, est de traiter les Transformations de données avec les outils proposés dans l'ETL.
Travailler sur une table pour modifier les données dedans, sur un grand volume risque d'être plus que pénalisant en terme de perfs.
SSIS permet plutôt de faire tout cela en mémoire avec des composants à lui.
P.S. : Il y a un forum spécial MS BI avec un sous-forum SSIS ;)
-
Merci pour la réponse :)
J'utilise justement SSIS pour faire la transformation des données, en exécutant de le module de "Tache d"execution de requete SQL" qui me permet d’écrire ce que je veux...
J'utilise également le flux de données afin de récupérer mon fichier source et de mapper les colonnes sur une table TEMP puis ensuite je renvoyais les données de ma tables TEMPS dans mes tables définitives... ?
J'ai l'impression que c'est pas du tout ca qu'il fallait faire, aye aye !
Jusqu’à présent, j'ai fait des packages avec SSIS pour récupéré les données sur le fichier txt avec la tache de flux de données, mais j'ai stocké les données sur une table qui s'appelle TEMP qui a de temporaire que le fait qu'elle ne me servira pas lorsque je vais vouloir faire des analyses... Elle me permet de charger mes données dans mon vrai modèle mais en fait, ça devrait ce passer en mémoire tout ce travail, c'est bien ca ?
Merci de bien me rassurer parce que j'ai l'impression d'avoir fait n'importe quoi et que je vais devoir tout recommencer... gros stress lol
En plus je galère a expliquer...
-
En fait, ce que vous faites est d'utiliser SSIS plus comme un ordonnanceur qu'un véritable ETL.
En fait, tout dépend des préférence...
Certains préfèrent charger les données dans une première base puis utilisent des procédures stockées (déclenchées par SSIS) pour les transférer, en les transformant vers une autre base.
D'autres préfère réaliser cette opération à travers des dataflows et appliquer ainsi les transformations de données.
Les tâches de scripts permettent d’exécuter des instructions SQL : SSIS comme un simple ordonnanceur de tâches.
Les dataflows permettent de lire les données, les transformer, les déposer quelques parts, le tout en mémoire, sans faire trop travailler les disques : SSIS comme un ETL ;)