Bonjour,
Je suis actuellement en train de découvrir SSIS et j'ai quelques difficultés pour faire ce que je veux, alors je vais essayer de vous donner les informations dont je dispose pour que vous puissiez me dire comment réaliser ma solution proprement !
J'aimerai faire des tableaux de bords qui permettent de faire du suivi de projet.
Pour chaque projet, on entre les données dans un fichier Excel contenant plusieurs feuilles avec différentes informations:
Feuille 1: Informations générales du projet
Feuille 2: Suivi des étapes du projet
Feuille 3: Actions effectuées en cas de problème sur le projet
Feuille 4: Personnes travaillant sur le projet et charges
J'ai créé un DWH (constellation) qui permet de répondre à ma problématique, ainsi que mon fichier Excel générique (1 par projet).
Dans mon DWH, j'ai mis les clés primaires (ID) en auto-incrément.
Sur SSIS, j'ai donc créé une tâche de flux de données dans laquelle j'effectue les actions suivantes:
- Source Excel --> Je récupère les données de toutes les feuilles en ayant sélectionné le "Mode d'accès aux données: Commande SQL". Cependant, je n'ai rien qui me permette de lier mes feuilles entre elles, mais certaines données qui appartiennent à une dimension, sont parfois sur des feuilles séparées, ce qui m'oblige à tout sélectionner.
- Conversion de données --> Transformation pour que les "types" de mes variables en entrée soient compatibles avec les attributs que j'ai spécifié dans mon DWH (exemple: quand j'ai un pourcentage dans mon fichier Excel, je spécifie que c'est un Flottant dans la conversion des données).
- Multi-diffusion -> afin de pouvoir entrer les données que j'ai récupéré dans mes différentes dimensions, je dois faire de la multi-diffusion, sinon je ne peux les rentrer que dans une seule table..
-Destination pour SQL Server: Pour chaque dimension je récupère les données, cependant, c'est ici qu'est mon problème: comme j'ai un modèle en constellation, j'aurai aimé pouvoir rentrer les données dans plusieurs tables à la fois afin que les liaisons entre les tables soient conservées. Or, ce n'est pas le cas, et je ne trouve pas comment récupérer les clés primaires de certaines tables, pour les faire apparaitre dans d'autres tables..
Deux exemple plus concrets:
- en admettant que j'ai réussi à rentrer toutes mes données dans les dimensions concernées, comment est ce que je peux récupérer leurs clés primaires pour remplir ma table de fait en même temps ?
- j'ai une dimension X qui est reliée à la fois à ma table de faits, et à une autre table Y et qui à l'ID de X en clé étrangère: comment spécifier l'ID de X dans Y au moment ou je rentre les données ?
Et au final, je ne sais pas vraiment comment se fait le remplissage de la table de faits, si quelqu'un pouvait m'éclairer sur ce point...
J'espère avoir été clair et remercie par avance toute personne pouvant m'aider à trouver un élément de réponse
Partager