8 juin 2014

Mappings : les fondamentaux

Un Mapping est un ensemble de sources et cibles liés par des transformations qui définissent des règles de transformation des données. Le mapping représente le flux de données entre les sources et les cibles. Il doit être conçu dans le Designer.
La figure ci-dessous représente un mapping simple avec une source, une cible et 3 transformations: 
Lorsque l’Intégration Service exécute une session dans un workflow, il utilise les instructions configurées dans le mapping pour lire les sources, transformer les données sources, et écrire dans les cibles.

1) Source(s) : décrit les caractéristiques d'une table source ou un fichier.
La source peut être créée ou importée (si elle existe) dans le Source Analyzer:
On peut importer les sources suivantes:
• BDD (Oracle, TERADATA, DB2, SQL Server...etc)
• Fichiers plats
• XML

• Cobol
• PowerExchange
• Mainframes

• Applications comme SAP, Siebel, et PeopleSoft

2) Transformation(s) : Modifie les données avant de les charger en cible.
Les transformations peuvent être créées soit dans le Transformation Developer (transformations ré-utilisables) ou directement dans le Mapping Designer.
Les transformations peuvent être actives ou passivesconnectées ou non connectées au flux de données. 
Active: Une transformation qui peut changer le nombre de lignes qui passent par la transformation,
Passive: Une transformation qui ne modifie pas le nombre de lignes qui passent par la transformation.

Liste des transformations:
Ci-dessous une liste des transformations utilisées dans le Mapping Designer. Les transformations les plus importantes sont décrites en détail dans des articles à part, il suffit de suivre les liens :

Source Qualifier Transformation : transformation active et connectée. Elle lit les données à partir d'une ou plusieurs tables relationnelles ou à partir d'un fichier plat.

Expression Transformation: transformation passive et connectée qui est utilisée pour transformer/calculer des données dans un même enregistrement.

Aggregator Transformation : transformation active et connectée qui permet d'effectuer des calculs tels que les moyennes et les sommes.

Filter Transformation : transformation active et connectée qui permet de filtrer les données selon une conditions.

Sorter Transformation : transformation active et connectée qui permet de trier les données (en supprimant les doublons dans certains cas).

Joiner Transformation : transformation active et connectée qui permet de joindre des sources de données hétérogènes.

Lookup Transformation : transformation active (à partir de la V9) et qui peut être connectée ou non connectée. Elle permet de chercher et récupérer des données dans un fichier plat, table relationnelle, une vue ou un synonyme.

Update Strategy Transformation : transformation active et connectée qui permet de taguer les lignes pour insertion, mise à jour, suppression ou rejet.

Union Transformation : transformation active et connectée qui effectue une fusion (UNION ALL) de au moins deux flux de données.

Router Transformation : transformation active et connectée qui permet de
router les données en fonction des conditions de routage. Elle est très utile par exemple dans la gestion des rejets unitaires; enregistrements KO routés vers une table/fichier des rejets et enregistrements OK routés vers la cible.

Stored Procedure Transformation : transformation passive qui peut être connectée ou non connectée. Elle appelle une procédure stockée (PL/SQL).

Sequence Generator Transformation : transformation passive et connectée qui permet de générer des clés uniques.

Transaction Control Transformation : transformation active et connectée qui permet de définir les commits et rollbacks lorsque l'on travaille avec les transactions.

Java Transformation : transformation connectée qui peut être soit active soit passive (propriété définie à la création). Elle permet d'incorporer du code Java dans PowerCenter : appel des packages Java (.jar) ou fonctions codées directement dans la transformation.

SQL Transformation : transformation connectée qui peut être soit active soit passive. Elle permet d'exécuter des requêtes (Query Mode) ou scripts SQL (Script Mode) sur la base de données.

Normalizer Transformation : transformation active et connectée. Elle est utilisée d'une part comme Source Qualifier pour les sources Cobol et d'autres part pour normaliser les données sources (en transformant des données avec de multiples occurrences/colonnes en plusieurs lignes, une par occurrence).

Rank Transformation : transformation active et connectée qui permet de renvoyer les n plus grandes ou plus petites valeurs d'un port ou groupe de ports. On peut par exemple être amenés à ne renvoyer que les 5 meilleures notes de chaque étudiant.

XML Source Qualifier : transformation active et connectée. Il s'agit du Source Qualifier dédié aux fichiers sources hiérarchiques de type XML.

XML Parser Transformation : transformation active et connectée. Elle permet de lire le XML dans un port de données d'entrée et de sortir un ou plusieurs ports de sortie.

XML Generator Transformation : transformation active et connectée. Elle lit les données à partir d'un ou plusieurs ports d'entrée et renvoie du XML dans un seul port de sortie.


3) Cible(s) : définit la table ou le fichier cible.
La cible peut être crées ou importée (si elle existe) dans le Target Designer:

Tips :
1- Il faut réduire le nombre total de transformations. Un nombre excessif de transformations va augmenter la complexité et rendra difficile la maintenance.
2- On doit multiplier l'usage des variables, transformations réutilisables et Mapplets (Reusable Transformations). Ceci-ci pour tirer parti du travail effectué par d'autres développeurs, promouvoir la standardisation du code et faciliter les tâches de maintenance.
3- Il faut utiliser les transformations actives au début du mapping afin de pré-filtrer les données et réduire le nombre d'enregistrements depuis le début.
4- Utilisez le plus possible des fichiers plats au lieu de tables de base de données. Les lectures/écritures dans un fichier sont plus rapides que dans une table de base de données sur le même serveur.
D'ailleurs, pour identifier les goulets d'étranglements (bottleneck) liés à une cible relationnelle, on tente de remplacer la cible relationnelle par un fichier plat et quantifier la différence.
Par ailleurs, les fichiers à largeur fixe sont plus rapides que le traitement des fichier délimités.

5- On peut créer rapidement une cible à partir d'une transformation dans le Mapping Designer en cliquant bouton droit sur la transformation, puis "Create And Add Target" : 
La cible aura donc la même structure que la transformation à partir de laquelle elle a été créée.
6- Quand on mappe un nouveau champs dans une transformation, celui-ci est placé à la fin. Voici une astuce pour le placer directement entre deux ports de l'expression suivante:
Dans l'exemple ci-dessous, nous mappons un nouveau champ que l'on souhaite placer entre le prénom et le salaire. Nous pouvons effectuer cela en sélectionnant le champ à mapper, garder la touche ctrl appuyée et placer le champ entre les deux ports Prenom et salaire de la transformation suivante:
et suite au drag & drop:
7- Quand on crée une cible relationnelle dans le Target Designer, nous avons la possibilité de créer cette cible en base de donnée à partir du menu du Designer. Pour le faire, il faut :
- sélectionner la Target, 
- aller dans Targets>>Generate/Execute SQL
  
- choisir la connexion à la BDD puis connect:
- sélectionner les options puis cliquer sur Generate and execute:
La table est ainsi créée en base de donnée.

2 commentaires: