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, vous configurez la transformation d'agrégation pour les performances en spécifiant les valeurs suivantes :
nombre de groupes attendus d'une opération Group by ;
nombre de valeurs distinctes attendues d'une opération Count distinct ;
pourcentage par lequel la mémoire peut être étendue pendant 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, vous configurez la transformation d'agrégation pour les performance en spécifiant le nombre de groupes attendus d'une opération Group by. La transformation d'agrégation prend en charge plusieurs sorties ; chacune pouvant être configurée différemment.
Au niveau de la colonne, vous spécifiez les valeurs suivantes :
agrégation que la colonne effectue ;
options de comparaison de l'agrégation.
Vous pouvez également configurer la transformation d'agrégation pour les performances en spécifiant les valeurs suivantes :
nombre de groupes attendus d'une opération Group by dans la colonne ;
nombre de valeurs distinctes attendues d'une opération Count distinct dans la colonne.
Vous pouvez également identifier des colonnes en tant que IsBig si une colonne contient 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 : CountryRegion, 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.
Lorsque vous effectuez une opération Group by, définissez les propriétés Keys ou KeysScale du composant et les sorties du composant. Grâce à Keys, vous pouvez spécifier le nombre exact de clés que la transformation doit normalement traiter. (Dans ce contexte, Keys fait référence au nombre de groupes attendus d'une opération Group by.) Grâce à KeysScale, vous pouvez spécifier un nombre approximatif de clés. Lorsque vous spécifiez une valeur appropriée pour Keys ou KeyScale, vous améliorez les performances parce que la transformation est en mesure d'allouer la mémoire adéquate pour les données que la transformation met en cache.
Lorsque vous effectuez une opération Distinct count, définissez les propriétés CountDistinctKeys ou CountDistinctScale du composant. Grâce à CountDistinctKeys, vous pouvez indiquer le nombre exact de clés que la transformation doit normalement traiter pour une opération Count distinct. (Dans ce contexte, CountDistinctKeys fait référence au nombre de valeurs distinctes attendues d'une opération Distinct count.) La propriété CountDistinctScale permet d'indiquer un nombre approximatif de clés pour une opération Count distinct. Lorsque vous spécifiez une valeur appropriée pour CountDistinctKeys ou CountDistinctScale, vous améliorez les performances parce que la transformation est en mesure d'allouer la mémoire adéquate pour les données que la transformation met en cache.
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 :
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
Procédure : trier des données pour les transformations de fusion et de jointure de fusion
|