Aller au contenu

Transformation de données avec DataStage

29 septembre 2023

David Cross

Transformation de données avec l’étape Transformer 

Dans une tâche DataStage (DS) (lien en anglais), le Transformateur sert à filtrer, modifier ou rediriger des données. Essentiellement, il vous permet de définir les conditions qui vont influencer les sorties. Dans ce billet, nous allons vous présenter différentes façons d’utiliser cet outil. 
 
Le Transformateur est aussi fréquemment utilisé pour acheminer les données vers plusieurs tables ou bases de données distinctes. Il permet également de tester des conditions spécifiques et, en cas d’échec, de créer un lien de rejet pour identifier l’origine du problème.     

À des fins de clarification, nous allons illustrer ces concepts avec des exemples. 

Types de transformations

 

Il existe trois grands types de transformations :

  • Les contraintes, qui filtrent les données 
  • Les dérivations, qui modifient les données 
  • Les rejets, qui redirigent les données 

Configuration des tâches

Nous avons créé une tâche parallèle simple avec un connecteur DB2 à la source et un autre à la destination. Le Transformateur fait le lien entre ces deux connecteurs, et la source et la destination sont déjà configurées. Les trois différents types de transformations seront décrits comme suit :

1. Filtrée / Contraintes

Les filtres, ou contraintes, facilitent le traitement de données qui répondent à des critères spécifiques. Vous pouvez par exemple filtrer vos données clients pour ne retenir que les informations relatives aux clients canadiens. Il est aussi possible de segmenter les données en différents flux sur la base de critères précis. Ceci pourrait mener à la création de tables distinctes pour les clients canadiens et internationaux. Voici un aperçu de Contraintes.

Sorties multiples

Travail parallèle avec le Transformateur et des sorties multiples

2. Dérivations

Généralement utilisées en conjonction avec des variables d’étape, les dérivations – comme nous l’avons déjà mentionné –, servent à modifier des données. En voici un exemple.

Dans notre table source, nous avons le champ ACTIVE dont la valeur est soit « Y » soit « N ». Notre objectif est de traduire ces valeurs en « Active » ou « Inactive » dans la table cible. Ainsi, nous créons la variable d’étape AcctActiveFlag pour stocker les résultats. Une instruction conditionnelle If/Else examinera les valeurs entrantes et effectuera la transformation.

Fonctions diverses

Dans le champ cible, « Y » sera traduit par « Active » et « N » par « Inactive ». DataStage propose beaucoup d’autres fonctions (conversion de date, d’heure, de nombre, de chaîne de caractères et de type) pour convertir des données. Par exemple, la fonctionNullToValue peut être utilisée pour remplacer une valeur nulle par une valeur spécifique.

3. Liens de rejet

Imaginez les liens de rejet comme une sorte de voie de dérivation qui dirige les données en fonction de critères spécifiques.

Assignations

Celles qui respectent les conditions sont acheminées vers la table cible, tandis que les autres sont « redirigées » vers un chemin distinct (ex. : un fichier texte) pour un examen ultérieur.

Traitement en boucle

Le Transformateur vous permet de générer plusieurs lignes de sortie pour une ligne d’entrée, une fonctionnalité essentielle lorsque vous avez besoin de répliquer certaines valeurs.

Cette opération implique principalement deux éléments :

  • Condition de boucle – Il s’agit d’une expression Vrai/Faux évaluée à chaque nouvelle ligne.
  • Variable de boucle – Cette variable continue de fonctionner tant que la condition est remplie.

Note ** Il est crucial que la condition devienne fausse à un certain point pour éviter une boucle sans fin.

Séparation des noms

Prenons l’exemple d’une table source qui contient un champ appelé MODEL. Les noms dans ce champ sont séparés par des barres obliques inversées (Table d’entrée). Notre objectif est de les séparer pour que chaque modèle apparaisse sur une ligne distincte (Table de sortie).

CarCount

Pour ce faire, nous créerons une variable d’étape nommée CarCount pour garder le compte des champset une expression dérivée qui prendra en charge la séparation et le comptage. Votre configuration devrait ressembler à ceci :

Condition de boucle

Ensuite, nous définirons notre condition de boucle comme étant inférieure ou égale à notre variable d’étape (CarCount).

Variable de boucle

Créons ensuite une variable de boucle appelée modelLoopVar qui prend la valeur d’une formule dérivée : Field(to_transformer.MODEL, “/”, @ITERATION, 1)

Résultat final de la configuration

Faites glisser modelLoopVar jusqu’à la dérivation d’entrée. Et voilà, la configuration du Transformateur devrait ressembler à ceci :

Conclusion

Le Transformateur est un outil précieux pour organiser et manipuler des données. Cependant, il présente certains inconvénients, notamment une consommation importante en ressources. Il est donc essentiel de considérer attentivement vos besoins et de planifier votre travail en conséquence. 

Si l’efficacité est une priorité, DS offre d’autres étapes avec des fonctionnalités similaires, mais qui consomment moins de ressources.
Si votre objectif est de diviser les données en plusieurs sorties, l’étape « Copy » serait plus appropriée. De même, l’étape « Filter » pourrait être utilisée pour le filtrage des données. Cependant, l’attrait du Transformateur réside dans le fait qu’il combine toutes les fonctionnalités des étapes Copy, Filter et Switch.

Pour plus d’information, consultez la documentation en ligne d’IBM qui détaille chaque étape de DS.

VOUS AVEZ UN PROJET ?