Comment compter le nombre de lignes distinctes avec SSIS ?

Comment calculer le nombre de lignes distinctes d’une table SQL ou d’un fichier de données dans un flux SSIS ?

Comment compter le nombre de lignes distinctes avec SSIS et le stocker dans un fichier texte, une table ou une variable? Cette opération SSIS est l’équivalent d’un COUNT DISCTINCT avec SQL Server. Il faut donc utiliser le composant Aggregate dans SSIS, nommé Agrégation en Français. On utilise ensuite l’option COUNT DISTINCT pour calculer le nombre de lignes uniques d’une table ou d’un fichier.

1. Structure du package pour compter le nombre de lignes

Pour commencer, dans le Data Flow, placer une source, le composant de type transformation SSIS Aggregate et une destination. Dans notre exemple, la source sera le composant SSIS OLE DB Source et la destination sera Flat File Destination pour exporter le résultat dans un fichier texte.

Les 3 composants SSIS pour calculer le nombre de lignes distinctes
Les 3 composants SSIS pour calculer le nombre de lignes distinctes

2. Faire pointer le composant OLE DB source vers la table SQL

Deuxièmement, il faut maintenant configurer le Data Flow SSIS. Visual Studio affiche maintenant des messages d’erreur sur les composants Integration Services. Ensuite, double-cliquer sur le composant OLE DB Source pour choisir la table source. Ici c’est la table HumanResources.Employee de la base AdventureWorks.

Configurer la connexion à la table source pour compter les lignes distinctes
Configurer la connexion à la table source pour compter les lignes distinctes

3. Configurer le composant SSIS Agrégation avec Count Distinct

Une fois la source choisie et configurée, configurer maintenant le composant SSIS Aggregate.

  1. Dans l’onglet Aggregations, choisir les colonnes où effectuer le calcul des lignes, c’est à dire celles à agréger.
  2. Dans la colonne Opération, choisir COUNT DISTINCT.
Configurer l'agrégation SSIS avec le Count Distinct
Configurer l’agrégation SSIS avec le Count Distinct

4. Relier l’Agrégation au fichier pour exporter le nombre de lignes

Maintenant, relier le composant SSIS d’aggrégation au composant cible, nommé Flat File Destination. Double-cliquer ensuite sur ce dernier pour choisir le fichier de destination. Pour finir, dans l’onglet Mappings, vérifier que les colonnes sont correctement reliées.

Configurer les liens en sortie pour calculer le nombre de lignes distinctes avec SSIS
Configurer les liens en sortie pour calculer le nombre de lignes distinctes avec SSIS

Après avoir configuré tous les composants du package SSIS, il n’y a plus d’erreurs dans le Data Flow.

Flux de données SSIS avec les 3 composants nécessaires
Flux de données SSIS avec les 3 composants nécessaires

5. Exécuter le package SSIS pour exporter le nombre de lignes dans le fichier texte

Exécuter maintenant le package SSIS. Le fichier plat exporté contient le nombre distinct de lignes pour les colonnes sélectionnées. Le fichier cible contient maintenant une ligne unique et le nombre 290, qui correspond au nombre de lignes de la table en entrée.

Exécution avec succès du flux de données SSIS
Exécution avec succès du flux de données SSIS

Conclusion sur le calcul de lignes avec SSIS

Enfin, cet article montre pas à pas comment compter le nombre de lignes distinctes avec un package SSIS, sans aucune ligne de code T-SQL. Pour les performances, il est conseillé de réaliser les opérations SQL directement sur le moteur SQL Server. Le but est de diminuer le transfert de données entre la base de données SQL et le serveur SSIS. Par ailleurs, les packages Integration Services permettent toutes les opérations disponibles en T-SQL, mais via une interface graphique et une industrialisation facilitée. Voici par exemple comment pivoter les lignes d’une table SQL en colonnes avec SSIS.

Il est bien sûr possible d’effectuer la même opération pour pivoter des données d’une autre manière. Elle est très pratique car via une seule opération T-SQL, mais plus complexe en termes de code, c’est la requête PIVOT SQL Server, directement depuis SSMS par exemple et avec du code T-SQL uniquement.

Be the first to comment

Leave a Reply

Your email address will not be published.


*