Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/07/2007, 13h55   #1
Membre du Club
 
Avatar de SebastienM
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 52
Points : 52
Par défaut Talend - Depliage de données

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.
SebastienM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 14h18   #2
Membre éclairé
 
Avatar de bouvda
 
Inscription : octobre 2005
Messages : 252
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2005
Messages : 252
Points : 312
Points : 312
Envoyer un message via MSN à bouvda
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.
bouvda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 14h29   #3
Membre du Club
 
Avatar de SebastienM
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 52
Points : 52
N'est-il pas possible de garder les types de donnée ?
SebastienM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 14h35   #4
Membre éclairé
 
Avatar de bouvda
 
Inscription : octobre 2005
Messages : 252
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2005
Messages : 252
Points : 312
Points : 312
Envoyer un message via MSN à bouvda
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.
bouvda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h09.


 
 
 
 
Partenaires

Hébergement Web