Pour faire suite au précédent article présentant l’utilisation du paramètre IDENTITY_INSERT dans Microsoft SQL Server, voici un petit appendice présentant la mise en oeuvre de cette notion dans l’ELT Stambia.
Reprenons l’exemple de la table DIM_TIME. Pour l’instant il n’y a aucune ligne permettant de gérer les lignes orphelines :
Pour charger ces lignes orphelines, nous allons exécuter la requête vue précédemment, dans un SQLOperation :
On voit qu’après l’exécution du process, la ligne a bien été insérée dans la table :
Essayons maintenant de charger un fichier texte contenant les valeurs suivantes :
FACT_ID_TIME;FACT_ID_GEO;FACT_NET_SALES;FACT_BUDGET 99;1;1000,00;900,00 99;1;2000,00;2200,00 99;1;1500,00;3000,00 99;1;3000,00;2555,00 99;1;4568,00;5000,00 99;1;8000,00;7500,00 99;1;3000,00;6000,00 99;1;3567,00;1000,00 99;1;6740,00;6500,00 99;1;6382,00;3800,00 99;1;8383,00;8000,00 99;1;7400,00;7400,00
On voit que dans la colonne FACT_ID_TIME il y a une valeur inconnue de la table DIM_TIME.
Pour rappel le résultat de notre requête d’analyse :
Chargeons le fichier avec le mapping suivant :
Vous remarquerez que ce sont des jointures fermées. L’exécution du mapping indique que 12 lignes ont été lues, mais qu’aucune n’a été intégrée. En effet du fait de nos jointure fermées, et d’un identifiant inconnu dans le fichier source, les lignes ne sont pas passées.
Nous allons alors ouvrir les jointures (OUTER JOIN) et modifier le mapping sur la table cible :
Nous utilisons la fonction coalesce ce qui permet de spécifier l’identifiant à utiliser, en cas de correspondance non trouvée dans les tables de dimensions.Dans ce cas, nous voyons que nos 12 lignes ont été intégrées :
Ce qui donne le résultat suivant en relançant notre requête :