Comment calculer le nombre de lignes distinctes d’une table avec SSIS, équivalent au Count Distinct en T-SQL ?
Comment calculer le nombre de lignes distinctes d’une table ou d’un fichier avec SSIS ? Cette opération est l’équivalent d’un COUNT DISCTINCT en SQL. Il faut utiliser le composant Aggregate dans SSIS. En effet, avec Visual Studio, il est possible d’utiliser le composant Aggregate. On utilise donc le COUNT DISTINCT pour calculer le nombre de lignes uniques d’une table.
Table des matières
1. Créer un package SSIS pour compter le nombre de lignes
Pour commencer, dans le Data Flow, placer une source, le composant 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.

2. Configurer le composant source de la table source
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, puis choisir une table. Ici c’est la table HumanResources.Employee de la base AdventureWorks.

3. Configurer le composant Agrégation avec la fonction Count Distinct
Une fois la source choisie et configurée, configurer maintenant le composant SSIS Aggregate. Dans l’onglet Aggregations, choisir les colonnes où effectuer le COUNT DISTINCT, c’est à dire celles à agréger. Dans la colonne Opération, choisir COUNT DISTINCT.

4. Relier l’Agrégation au fichier pour exporter le nombre de lignes
Maintenant, relier le composant SSIS au dernier composant, nommé Flat File Destination. Double-cliquer ensuite sur ce dernier pour choisir le fichier de destination. Pour finir, dans l’onglet Mapping, vérifier que les colonnes sont correctement sélectionnées.

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

5. Exécuter le package et compter le nombre de lignes distinctes
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.

Cet article montre donc pas à pas comment effectuer un count distinct avec SSIS, sans aucune ligne de code SQL. Pour les performances, il est conseillé de réaliser les opérations SQL directement sur le moteur SQL Server pour diminuer le transfert de données entre la base de données sur le Serveur SQL et le serveur SSIS.
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.
Voici la même opération de pivot, très pratique aussi mais plus complexe en termes de code, le PIVOT SQL Server, directement depuis SSMS et avec du code T-SQL uniquement.