Agréger et faire la somme de données pour réaliser l’équivalent du GROUP BY en SQL avec le composant SSIS Aggregate.
Dans un projet ETL avec SSIS, il est courant de calculer des agrégations de données depuis une table SQL Server vers à un niveau supérieur, comme les magasins de données. C’est à dire, en pratique calculer la somme de montants. Pour cela, deux solutions possibles, écrire une requête SQL classique de type Group By ou utiliser le composant SSIS Aggregate. Ce tutoriel explique pas à pas comment utiliser le composant SSIS et regrouper des données sans écrire de requête SQL.
Table of Contents
1. Préparer les tables et les données avec SQL Server
L’objectif de ce tutoriel est de lire puis agréger des données depuis le niveau de la table des ventes, dbo.Sales:
Client
Mois
Année
Produit
Vers un niveau plus haut et les stocker dans la table agrégée des ventes, dbo.Sales_Grouped, c’est à dire:
Client
Année
1.1 Créer la table des ventes avec le script SQL
Se connecter à SSMS et exécuter ce script pour créer la table source.
2.1 Ajouter tous les composant SSIS au flux de données
Depuis un package SSIS, ajouter un flux de données. Ajouter ensuite trois composants:
Une source OLE DB
Une transformation SSIS Aggregate
Un composant OLE DB Destination
Ajouter les composants Source, Aggregate et Destination au flux de données SSIS
2.2 Configurer la table source avec SSIS
Ouvrir le composant OLE DB Source et sélectionner la table des ventes créé et alimentée à l’étape 1.1.
Choisir la table source à agréger avec le composant SSIS
Vérifier depuis l’onglet Colonnes (Columns) que les colonnes de la table sont mappées correctement.
Vérifier le mapping des colonnes sources depuis le package SSIS
2.3 Paramétrer le GROUP BY dans le composant d’agrégation SSIS
Relier le composant OLE DB Source au composant Aggregate SSIS. Ouvrir maintenant la transformation et sélectionner les colonnes suivantes:
CustomerID: avec une opération Group By.
YearID : avec une opération Group By.
Sales : avec une opération Sum pour calculer la somme des ventes en sortie du composant.
Le composant SSIS détecte les types de données et par défaut ne propose d’opérations d’agrégations que pour les colonnes numériques.
Configurer le composant d’agrégation SSIS pour agréger les données et calculer la somme
2.4 Configurer la table cible
Relier maintenant le composant Aggregate avec la table cible. Choisir simplement la table dbo.Sales_Grouped.
Choisir la table SQL cible pour stocker les données à agréger avec le package SSIS
Vérifier aussi le mapping depuis l’onglet Mappings.
Vérifier le mapping des 3 colonnes sources avec la cible
3. Exécuter le package SSIS et vérifier les données agrégées
Exécuter enfin le packager SSIS pour grouper les données de ventes à un niveau annuel et les stocker dans la deuxième table. Le package lit 44 lignes sources et regroupe les données de la table en 16 lignes.
Exécuter le package pour agréger les 44 lignes initiales en 16 lignes calculées
Pour contrôler les données, deux options, la première est d’utiliser la visionneuse de données SSIS directement depuis le composant OLE DB Destination, comme ceci:
Résultat avec les données de la table agrégées par clients et par années
La deuxième option est d’exécuter directement depuis SSMS une requête SQL pour vérifier que les données de la table sont conformes. Exécuter donc cette requête SQL avec la fonction GROUP BY qui est l’équivalent des opérations du package SSIS.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT
[CustomerID],
[YearID],
SUM([Sales]) AS [Sales]
FROM [dbo].[Sales]
GROUPBY
[CustomerID],
[YearID]
SELECT
[CustomerID],
[YearID],
SUM([Sales]) AS [Sales]
FROM [dbo].[Sales]
GROUP BY
[CustomerID],
[YearID]
SELECT
[CustomerID],
[YearID],
SUM([Sales]) AS [Sales]
FROM [dbo].[Sales]
GROUP BY
[CustomerID],
[YearID]
Requête SQL GROUP BY équivalente à l’agrégation avec SSIS
4. Conclusion sur la transformation SSIS Aggregate
Ce tutoriel SSIS explique pas à pas comment agréger des données et calculer une somme avec un GROUP BY sur une table sans écrire de requête SQL. Le composant est pratique pour des requêtes simples, dans des cas plus complexes il est préférable d’écrire une requête SQL dans le composant OLE DB Source. Afin de conserver des packages simples et faciles à maintenir.
Sur le thème des regroupements et agrégations de données SSIS
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Toujours activé
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Soyez le premier à commenter