Jointure dans SSIS avec le composant merge join

Comment faire une jointure avec le composant Merge Join dans SSIS? On utilise le composant SSIS Merge Join pour faire une jointure et fusionner deux ou plusieurs sources de données. Autrement dit, le composant SSIS Merge Join permet de fusionner différentes sources hétérogènes une seul, par exemple fichiers plats, fichier Excel, tables SQL.

 

Dans cet exemple le composant va fusionner les deux fichiers textes sources dans une seule table cible SQL Server. Pour notre exemple, comme source deux fichiers plats et comme destination une table dans notre base de données SQL Server. Avec SSIS, on premises ou sur Azure, ce composant est utile pour gérer des tables distinctes sans code. 

 

Faire une jointure dans SSIS avec le composant merge join

 

Première étape: préparer les deux fichiers sources et la table cible

Voici, les 2 fichiers plats utilisés dans l’exercice.

Fichier Source 1 :

Fichier Source 2 :

blank

Voici maintenant la requête de la création de la table Neighbourhood: 

 

CREATE TABLE [dbo].[Neighbourhood] (
  [Name] 		[nvarchar](50) NOT NULL,
  [PhoneNumber] 	[int] NOT NULL,
  [HouseNumber] 	[int] NOT NULL,
  [HouseColor] 	[nvarchar](50) NOT NULL,
  [HouseFloor] 	[int] NOT NULL
);

 

 

Deuxième étape pour créer une jointure dans SSIS avec le composant Merge Join : paramétrer les composants SSIS

 

1. Commencer par créer trois connexions dans le  package SSIS dans l’onglet connexion manager, une pour chaque fichier texte et une à la base de données.

blank

2. Ensuite, dans la tâche Data Flow Task, faire glisser deux composant SSIS Flat File Source. Soit le composant SSIS Merge Join et le composant SSIS OLE DB Destination comme ci-dessous. Ensuite, attribuer les connexions déjà crées aux composants Source comme ci-dessous :

blank

3. Configurer le composant SSIS Merge Join, après un double-clic, l’erreur suivante s’affiche:

“The IsSorted property must be set to True on both sources of this transformation.”

blank

 

4. La raison pour laquelle s’affiche ce message d’erreur est que pour être traité par le composant SSIS Merge Join, les données sortant des sources doivent être triées. Pour indiquer à SSIS que les données sont triées, faites un clic droit sur un composant SSIS Flat File Source. Cliquer sur show advanced editor puis sur input and output properties. Puis passer la case IsSorted à True (faites la même chose pour les deux sources) comme ci-dessous :

blank

 

 

Troisième étape: paramétrer la jointure et exécuter le package SSIS

5. Ensuite, indiquer obligatoirement à SSIS quelle colonne fait office de SortKey, c’est à dire sur quelle colonne trier les données. En effet, le composant Flat File Source a trié les données en amont du Merge Join. Dans cet exemple, c’est la colonne HouseNumber (faire la même chose pour les deux fichiers sources). De plus pour une jointure, il faut nécessairement une colonne en commun, qui est la clef de jointure.

blank

 

6. Une fois les données triées, configurer le composant SSIS Merge Join jusqu’à n’avoir aucun message d’erreur. Choisir quelles colonnes intégrer dans la table de destination et avec quel type de jointure. Dans ce cas, choisir Inner join, pour n’avoir que les lignes présentes dans les deux fichiers textes.

blank

 

7. Le package SSIS est désormais correctement configuré et est prêt à être lancé (appuyer sur F5 pour lancer l’exécution). Noter que les 5 lignes de chaque fichier en entrée du composant et les 5 lignes fusionnées en sortie du composant Merge Join.

blank

 

 

Quatrième et dernière étape pour créer une jointure dans SSIS avec le composant Merge Join : vérifier le résultat de la jointure 

 

8. Enfin, vérifier que les deux fichiers plats choisis en source ont bien été chargés dans la table choisie en destination grâce au composant SSIS Merge Join, avec une simple requête SQL:

SELECT TOP 1000 
[Name], 
[PhoneNumber], 
[HouseNumber], 
[HouseColor], 
[HouseFloor] 
FROM [dbo].[Neighbourhood]

Note: Penser à adapter la requête à la table cible.

blank

Enfin, voici une méthode pour utiliser le composant d’agrégation SSIS.

Soyez le premier à commenter

Laisser un commentaire