Transformation de tableau croisé dynamique

La transformation de tableau croisé dynamique transforme un dataset normalisé en une version moins normalisée mais plus compacte en croisant dynamiquement les données d'entrée sur une valeur de colonne. Par exemple, un dataset Commandes normalisé comprenant le nom de client, le produit et la quantité achetée contient généralement plusieurs lignes pour un même client ayant acheté plusieurs produits ; chaque ligne indiquant les détails de commande d'un produit différent. En croisant dynamiquement le dataset sur la colonne de produit, la transformation de tableau croisé dynamique peut sortir un dataset contenant une seule ligne par client. Cette ligne unique indique tous les achats du client ; le nom des produits est indiqué sous forme de nom de colonne et la quantité sous forme de valeur de la colonne de produit. Dans la mesure où tous les clients n'achètent pas chacun des produits, de nombreuses colonnes peuvent contenir des valeurs null.

Lorsqu'un dataset est croisé dynamiquement, les colonnes d'entrée jouent des rôles différents dans le processus de croisement dynamique. Une colonne peut jouer les rôles suivants :

  • La colonne est transmise à la sortie sans subir aucune modification. De nombreuses lignes d'entrées pouvant se traduire par une seule ligne de sortie, la transformation copie uniquement la première valeur d'entrée de la colonne.

  • La colonne joue le rôle de clé ou de partie de la clé qui identifie un ensemble d'enregistrements.

  • La colonne définit le tableau croisé dynamique. Les valeurs de cette colonne sont associées aux colonnes du dataset croisé dynamiquement.

  • La colonne contient des valeurs qui sont placées dans les colonnes créées par le tableau croisé dynamique.

Le diagramme qui suit montre un dataset avant croisement dynamique des données sur la colonne Produit.

Dataset après avoir été croisé dynamiquement

Le diagramme qui suit montre un dataset après croisement dynamique des données sur la colonne Produit.

Dataset avant d'être croisé dynamiquement

Pour une plus grande efficacité du croisement dynamique des données, autrement dit pour créer aussi peu d'enregistrements dans le dataset de sortie que possible, les données d'entrée doivent être triées sur la colonne tableau croisé dynamique. Si les données ne sont pas triées, la transformation de tableau croisé dynamique risque de générer plusieurs enregistrements pour chaque valeur de la clé d'ensemble, qui est la colonne définissant l'appartenance à l'ensemble. Par exemple, si le dataset est croisé dynamiquement sur une colonne Nom, mais que les noms ne sont pas triés, le dataset de sortie risque de contenir plus d'une ligne pour chaque client car un croisement dynamique est effectué chaque fois que la valeur de la colonne Nom change.

Les données d'entrée peuvent contenir des lignes en double, ce qui entraîne l'échec de la transformation de tableau croisé dynamique. L'expression « lignes en double » désigne des lignes qui ont les mêmes valeurs dans les colonnes de clé d'ensemble et dans les colonnes tableau croisé dynamique. Par exemple, si vous utilisez le dataset avant que les données ne soient croisées dynamiquement sur la colonne Product, comme le montre le diagramme, et que vous ajoutez une ligne ayant la valeur Kate dans la colonne Cust et la valeur Soda dans la colonne Product, ces valeurs en double provoqueront l'échec de la transformation de tableau croisé dynamique, indépendamment de la quantité présente dans la colonne Qty. Pour éviter cet échec, vous pouvez soit configurer la transformation de manière à rediriger les lignes d'erreur vers une sortie d'erreur, soit préagréger les valeurs de manière à ce qu'il n'y ait pas de lignes en double. Par exemple, dans l'échantillon de dataset, vous pouvez additionner les valeurs de la colonne Qty par client et produit.

La transformation de tableau croisé dynamique utilise les propriétés de ses colonnes d'entrée et de sortie pour définir l'opération de croisement dynamique.

La transformation de tableau croisé dynamique comporte la propriété personnalisée PivotKeyValue. Cette propriété peut être mise à jour par une expression de la propriété lors du chargement du package. Pour plus d'informations, consultez Informations de référence des expressions Integration Services, Utilisation des expressions de propriété dans des packages et Propriétés personnalisées des transformations.

Cette transformation possède une entrée, une sortie normale et une sortie d'erreur.

Configuration de l'exemple de dataset

L'exemple de dataset illustré dans le diagramme a été configuré de la manière suivante : la propriété PivotUsage de la colonne Cust a la valeur 1 pour indiquer qu'il s'agit d'une colonne de clé d'ensemble ; la propriété PivotUsage de la colonne d'entrée Product a la valeur 2 pour indiquer qu'une colonne doit être créée pour chaque produit ; la propriété PivotUsage de la colonne d'entrée Qty a la valeur 3 pour indiquer que les valeurs de quantité sont placées dans la colonne tableau croisé dynamique.

La sortie de la transformation a été configurée pour inclure six colonnes. Les colonnes, qui peuvent être ajoutées à l'aide de la boîte de dialogue Éditeur avancé, ont été nommées Cust, Ham, Soda, Milk, Beer et Chips. La propriété PivotKeyValue de la colonne Ham a été définie sur Ham, pour indiquer que la transformation doit rechercher cette valeur dans la colonne d'entrée. De même, la propriété PivotKeyValue de la colonne Soda a été définie sur Soda, etc.

Les colonnes de l'entrée de la transformation ont été mappées aux colonnes de la sortie.

La propriété SourceColumn de la colonne Cust a été configurée pour utiliser l'identificateur de lignage de la colonne d'entrée Cust. Les propriétés SourceColumn des colonnes Ham, Soda, Milk, Beer et Chips ont été configurées pour utiliser l'identificateur de lignage de la colonne d'entrée Qty. Dans une autre configuration, la propriété SourceColumn des colonnes Ham, Soda, Milk, Beer et Chips aurait pu être définie sur -1, ce qui aurait permis d'insérer la valeur True au lieu de la valeur des données. Par exemple, au lieu des valeurs 12 et 24 (quantité achetée), la colonne Beer aurait alors contenu la valeur True, pour indiquer que seul ce client a acheté le produit.

Les lignes de la sortie de la transformation contiennent les valeurs des colonnes d'entrée Cust et Qty.

Options de tableau croisé dynamique

La propriété PivotUsage des colonnes d'entrée permet de spécifier le rôle de chaque colonne dans le processus de croisement dynamique. Les valeurs correctes de PivotUsage sont 0, 1, 2 et 3.

Le tableau ci-dessous décrit les options de PivotUsage.

Option

Description

0

La colonne n'est pas croisée dynamiquement et les valeurs de la colonne sont transmises à la sortie de la transformation.

1

La colonne fait partie de la clé d'ensemble qui identifie une ou plusieurs lignes comme appartenant à un même ensemble. Toutes les lignes d'entrée portant la même clé d'ensemble sont combinées dans une ligne de sortie.

2

La colonne est une colonne tableau croisé dynamique. Au moins une colonne est créée à partir de chaque valeur de colonne.

3

Les valeurs de cette colonne sont placées dans les colonnes créées à la suite du croisement dynamique.

Configuration de la transformation de tableau croisé dynamique

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 avancé ou par programme, cliquez sur l'une des rubriques suivantes :

Pour plus d'informations sur la définition des propriétés, consultez Procédure : définir les propriétés d'un composant de flux de données.

Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN ou TechNet :

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.