|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Bonjour,
j'aimerai "deplier" les champs lors d'une fusion de table (tMap), je m'explique : Une table "phase" contient 11 phases dans des identifiants, et je voudrais avec l'aide de talend les transformer dans la table des faits en phase1,phase2,phase3, etc.. (autant de champs que de phases). Voici une image pour expliquer un peu mieux mon problème : ![]() Merci. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Bonjour,
une solution consisterait à utiliser un tDenormalize avant le tMap, sur l'entrée phase_ods. Dans le tDenormalize il faudrait grouper par ID_INSTANCE. Le schéma de sortie aurait les mêmes champs qu'en entrée excepté que tous les types seraient des String. Vous pourriez mettre comme délimiteur "|" par exemple. Ensuite, dans votre tMap, il faudrait créer une table de variables avec comme variables : - "phase" , de type Object qui aurait pour expression : phase_ods.id_phase.split("|") - "phase_1" , de type String qui aurait pour expression : ((String[])Var.phase)[0] ... - "phase_11" , de type String qui aurait pour expression ((String[])Var.phase)[10] Il suffirait dès lors de relier ces variables à la table de sortie dans les champs correspondants et de faire une conversion pour obtenir le bon type. Cette solution devrait fonctionner s'il y a toujours 11 phases par instance et si les phases sont triées avant le tDenormalize. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
N'est-il pas possible de garder les types de donnée ?
|
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Je ne pense pas qu'il soit possible de garder le type de données car le tDenormalize concatène les valeurs avec le délimiteur spécifié. C'est pour ça que j'ai conseillé de passer par des String, ce qui permet en outre d'utiliser la méthode split pour séparer de nouveau les valeurs précédemment concaténées.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com