Expand To Show Full Article
Nombre de lignes distinctes avec SSIS - Agrégation - MS BI

Nombre de lignes distinctes avec SSIS et le composant agrégation

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.

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.

Source OLE DB, composant Aggregate et Fichier plat destination, 3 composants pour calculer le nombre de lignes distinctes avec SSIS
3 composants pour calculer le nombre de lignes distinctes avec SSIS

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.

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 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.

Compter le nombre de lignes distinctes avec SSIS et le composant agrégation
Compter le nombre de lignes distinctes avec SSIS et le composant agrégation

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.

Configurer le mapping en sortie pour calculer le nombre de lignes distinctes avec SSIS
Configurer le mapping 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.

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.

Exécution du data flow pour calculer le nombre de lignes distinctes avec SSIS
Exécuter le flux de données SSIS pour compter le nombre de lignes distinctes de la table

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut