vendredi 26 avril 2013

tNormalizeSchema pour normaliser un groupe de colonnes avec Talend Open Studio


Aujourd'hui je vais vous présenter un composant Talend bien pratique disponible sur Talend Exchange.
Il fait gagner un temps fou lorsque l'on est confronté a cette problématique.
Il s'agit du tNormalizeSchema développé par jlolling

Voyons un cas concret pour mieux comprendre l’intérêt de ce composant.
Soit le jeu de données tabulaires suivant:



id qual1 eff1 qual2 eff2 qual3 eff3 qual4 eff4 qual5 eff5
1 2113 24
2 4323 14 4711 1
3 3421 7 4112 7 4132 7 6112 12 6611 6
4 6512 2
5 4711 7
6 3151 5 5112 16 5311 16
7 3511 19 4211 8 4323 17 4711 8 9112 8
8 4322 3
9 2113 22 2251 22 2311 2 3101 2
10 2112 17 2132 17 2171 17 2251 17 3101 17

id correspond à un identifiant client
Ensuite nous retrouvons 5 fois le jeu de colonnes qual (qualifications) / eff (effectifs).

Nous aimerions normaliser ce flot de données de sorte à obtenir une liste d'occurences id/qual/eff

Voici comment procéder avec Talend et ce fameux composant.

Installer le composant dans Talend Open Studio en passant par le lien exchange dans la barre de boutons.


Une fois installé branchez le sur votre flux de données et renseignez les propriétés du composant comme suit:
On indique dans l'ordre:
  1. le nombre de champs à normaliser
  2. combien de fois le groupe de colonnes peut se répéter
  3. le champs identifiant


Ensuite on réduit le schéma cible pour qu'ils ne contiennent plus que 3 colonnes.

Le job finalisé :
 J'ai ajouté un filtre pour supprimer les occurrences vides et voilà le résultat:

.--+-----+----.
|  Résultat   |
|=-+-----+---=|
|id|qual1|eff1|
|=-+-----+---=|
|1 |2113 |24  |
|2 |4323 |14  |
|2 |4711 |1   |
|3 |3421 |7   |
|3 |4112 |7   |
|3 |4132 |7   |
|3 |6112 |12  |
|3 |6611 |6   |
|4 |6512 |2   |
|5 |4711 |7   |
|6 |3151 |5   |
|6 |5112 |16  |
|6 |5311 |16  |
|7 |3511 |19  |
|7 |4211 |8   |
|7 |4323 |17  |
|7 |4711 |8   |
|7 |9112 |8   |
|8 |4322 |3   |
|9 |2113 |22  |
|9 |2251 |22  |
|9 |2311 |2   |
|9 |3101 |2   |
|10|2112 |17  |
|10|2132 |17  |
|10|2171 |17  |
|10|2251 |17  |
|10|3101 |17  |
'--+-----+----'

TADA !!


En espérant que ça puisse aider
@ bientôt !

Aucun commentaire:

Enregistrer un commentaire