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:
- le nombre de champs à normaliser
- combien de fois le groupe de colonnes peut se répéter
- 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