Transformation d'agrégation
La transformation d'agrégation applique des fonctions d'agrégation, comme Average, aux valeurs des colonnes et copie les résultats dans la sortie de la transformation. Outre les fonctions d'agrégation, cette transformation propose la clause GROUP BY qui permet de spécifier des groupes auxquels appliquer l'agrégation.
La transformation d'agrégation est configurée au niveau de la transformation, de la sortie et de la colonne.
- Au niveau de la transformation, la transformation d'agrégation est configurée en vue d'améliorer ses performances en spécifiant le nombre de clés et de clés de compte distinct que la transformation doit normalement gérer, ainsi que le pourcentage d'extension possible de la mémoire au cours de l'agrégation. La transformation d'agrégation peut également être configurée de manière à générer un avertissement au lieu d'échouer lorsque la valeur d'un diviseur est zéro.
- Au niveau de la sortie, la transformation d'agrégation est configurée en vue d'améliorer ses performances en spécifiant le nombre de clés que doit normalement contenir la sortie. La transformation d'agrégation prend en charge plusieurs sorties ; chacune pouvant être configurée différemment.
- Au niveau de la colonne, vous devez spécifier l'agrégation effectuée par la colonne et les options de comparaison de l'agrégation. Vous pouvez également configurer la transformation d'agrégation pour améliorer ses performances en spécifiant le nombre de clés et de clés de compte distinct que chaque colonne contient et en identifiant les colonnes comme IsBig si elles contiennent des valeurs numériques élevées ou de grande précision.
La transformation d'agrégation est asynchrone, ce qui signifie qu'elle ne consomme pas les données et ne les publie pas ligne par ligne. Au lieu de cela, elle consomme tout l'ensemble de lignes, effectue les regroupements et les agrégations, puis publie les résultats.
Cette transformation ne transmet aucune colonne, mais en crée de nouvelles dans le flux de données pour les données qu'elle publie. Seules les colonnes d'entrée auxquelles des fonctions d'agrégation s'appliquent ou les colonnes d'entrée que la transformation utilise pour le regroupement sont copiées dans la sortie de la transformation. Par exemple, l'entrée d'une transformation d'agrégation peut contenir trois colonnes : PaysRégion, Ville et Population. La transformation effectue un regroupement à partir de la colonne CountryRegion et applique la fonction Sum à la colonne Population. La sortie n'inclut donc pas la colonne Ville.
Vous pouvez également ajouter plusieurs sorties à la transformation d'agrégation et diriger chaque agrégation vers une sortie différente. Par exemple, si la transformation d'agrégation applique les fonctions Sum et Average, chaque agrégation peut être dirigée vers une sortie différente.
Vous pouvez appliquer plusieurs agrégations à une même colonne d'entrée. Par exemple, si vous souhaitez calculer la somme et la moyenne d'une colonne d'entrée nommée Sales, vous pouvez configurer la transformation de sorte qu'elle applique les fonctions Sum et Average à la colonne Sales.
La transformation d'agrégation comporte une entrée et une ou plusieurs sorties. Elle ne prend pas en charge les sorties d'erreurs.
Opérations
La transformation d'agrégation prend en charge les opérations suivantes.
Opération | Description |
---|---|
Group by |
Divise les datasets en groupes. Les colonnes contenant tout type de données peuvent être utilisées pour le regroupement. Pour plus d'informations, consultez GROUP BY (Transact-SQL). |
Sum |
Additionne les valeurs d'une colonne. Seules les colonnes contenant des données de type numérique peuvent être additionnées. Pour plus d'informations, consultez SUM (Transact-SQL). |
Average |
Renvoie la moyenne des valeurs d'une colonne. La moyenne ne peut être calculée que sur les colonnes contenant des données de type numérique. Pour plus d'informations, consultez AVG (Transact-SQL). |
Count |
Renvoie le nombre d'éléments figurant dans un groupe. Pour plus d'informations, consultez COUNT (Transact-SQL). |
Count distinct |
Renvoie le nombre de valeurs non null uniques figurant dans un groupe. Pour plus d'informations, consultez Suppression des doublons à l'aide du mot clé DISTINCT. |
Minimum |
Renvoie la valeur minimale figurant dans un groupe. Pour plus d'informations, consultez MIN (Transact-SQL). À la différence de la fonction Transact-SQL MIN, cette opération peut être utilisée uniquement avec des données de type numérique, date et heure. |
Maximum |
Renvoie la valeur maximale figurant dans un groupe. Pour plus d'informations, consultez MAX (Transact-SQL). À la différence de la fonction Transact-SQL MAX, cette opération peut être utilisée uniquement avec des données de type numérique, date et heure. |
La transformation d'agrégation traite les valeurs null de la même manière que le moteur de base de données relationnelle SQL Server. Ce comportement est défini dans la norme SQL-92. Les règles suivantes s'appliquent :
- Dans une clause GROUP BY, les valeurs NULL sont traitées comme toute autre valeur de colonne. Si la colonne de regroupement contient plusieurs valeurs null, ces valeurs sont placées dans un seul groupe.
- Dans les fonctions COUNT (nom de colonne) et COUNT (nom de colonne DISTINCT), les valeurs NULL sont ignorées et le résultat ne tient pas compte des lignes contenant des valeurs NULL dans la colonne nommée.
- Dans la fonction COUNT (*), toutes les lignes sont comptées, y compris celles contenant des valeurs NULL.
Traitement des nombres élevés dans les agrégats
Une colonne peut contenir des valeurs numériques nécessitant une attention particulière en raison de leur grandeur ou de leur précision. La transformation d'agrégation inclut la propriété IsBig que vous pouvez définir sur les colonnes de sortie de manière à appeler un traitement spécial des nombres élevés ou de grande précision. Si la valeur d'une colonne dépasse 4 milliards ou si une précision plus grande que le type de données float est requise, IsBig doit être défini sur 1.
Le fait de définir la propriété IsBig sur 1 affecte la sortie de la transformation d'agrégation de la manière suivante :
- Le type de données DT_R8 est utilisé à la place du type de données DT_R4.
- Les résultats de l'opération Count sont stockés en tant que type de données DT_UI8.
- Les résultats de l'opération Count distinct sont stockés en tant que type de données DT_UI4.
Remarque : |
---|
Vous ne pouvez pas définir IsBig sur 1 pour les colonnes utilisées avec les opérations GROUP BY, Maximum ou Minimum. |
Considérations relatives aux performances
La transformation d'agrégation comprend un ensemble de propriétés que vous pouvez définir pour améliorer ses performances.
- Définissez les propriétés Keys et KeysScale du composant et des sorties du composant. Grâce à la propriété Keys, vous pouvez spécifier le nombre exact de clés que la transformation doit normalement traiter tandis que la propriété KeysScale, permet d'indiquer un nombre approximatif de clés. Si vous spécifiez une valeur pour la propriété Keys, qui correspond à la valeur que recevra la transformation lors de l'exécution du package, la transformation ne réorganise pas les totaux mis en cache, ce qui améliore les performances.
- Définissez les propriétés CountDistinctKeys et CountDistinctScale du composant. La propriété CountDistinctKeys, permet d'indiquer le nombre exact de clés que la transformation doit normalement traiter pour une opération Count distinct. La propriété CountDistinctScale permet d'indiquer un nombre approximatif de clés pour une opération Count distinct. Si la valeur que vous spécifiez pour la propriété CountDistinctScale correspond à la valeur que recevra la transformation lors de l'exécution du package, la transformation ne réorganise pas les totaux mis en cache, ce qui améliore les performances.
Configuration de la transformation d'agrégation
Vous pouvez définir les propriétés par le biais du concepteur SSIS ou par programme.
Pour plus d'informations sur les propriétés que vous pouvez définir dans la boîte de dialogue Éditeur de transformation d'agrégation, cliquez sur l'une des rubriques suivantes :
- Éditeur de transformation d'agrégation (onglet Agrégations)
- Éditeur de transformation d'agrégation (onglet Avancé)
La boîte de dialogue Éditeur avancé reflète les propriétés qui peuvent être définies par programme. Pour plus d'informations sur les propriétés que vous pouvez définir dans la boîte de dialogue Éditeur avancé ou par programme, cliquez sur l'une des rubriques suivantes :
Pour plus d'informations sur la définition des propriétés, cliquez sur l'une des rubriques suivantes :
- Procédure : agréger les valeurs dans un dataset à l'aide de la transformation d'agrégation
- Procédure : définir les propriétés d'un composant de flux de données à l'aide d'un éditeur de composant
- Procédure : définir les propriétés d'un composant de flux de données dans la fenêtre Propriétés
- Procédure : définir les propriétés d'un composant de flux de données à l'aide de l'éditeur avancé
- Procédure : définir des attributs de tri sur une sortie
Voir aussi
Concepts
Création du flux de données d'un package
Transformations Integration Services