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 09/09/2008, 17h02   #1
Invité de passage
 
Inscription : septembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 14
Points : 3
Points : 3
Par défaut Problème de manipulation de date - Chargement partiel de données

Bonjour,

Environment : Talend V2.4.1 Postgresql MySQL

J'ai une table HIST qui historise toutes les exécutions de job (date d'exécution, ...). Remplissage de la table HIST avec un tStatCatcher.

Dans un job X, je souhaite charger les données dont la date de dernière mise à jour est supérieure à la date contenue dans la table HIST.

Pour cela, j'ai :
tPostgresqlInput ---Main---tJavaRow---OnComponentOK----tMySqlInput


Le composant tPostgresqlInput contient :
select * from "HIST" where "type_msge" = 'end' and "msge" = 'success'
order by "date" DESC LIMIT 1

Le composant tJavaRow contient :
context.dateComparaison=row1.date.toString();
System.out.println(context.dateComparaison);
System.out.println(ConvDate.convertDate(context.dateComparaison));

context.dateComparaison est de type String
System.out.println(context.dateComparaison) donne Tue Sep 09 16:06:26 CEST 2008
System.out.println(ConvDate.convertDate(context.dateComparaison)) donne 2008-09-09

La routine ConvDate contient :
package routines;
import java.text.SimpleDateFormat;
import java.text.ParsePosition;
import java.util.Locale;

public class ConvDate {
public static String convertDate(String ladate){
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
SimpleDateFormat sdff = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
return sdff.format(sdf.parse(ladate,new ParsePosition(0)));

}
}


Le composant tMysqlInput contient :
select *
from tableA
where date > '"+ConvDate.convertDate(context.dateComparaison)+"';
PROBLEME : Le job charge toutes les lignes.

Si je mets :
select *
from tableA
where date > '2008-09-09';
C'est bon. Seules les lignes correspondant à cette date sont chargées.

Why ???

MERCI BEAUCOUP pour votre aide.
Inspiré des échanges entre SebastienM et bouvda du 05/03/2008 que je remercie.
Cordialement.
kaskai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2008, 09h16   #2
Invité de passage
 
Inscription : septembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 14
Points : 3
Points : 3
Bonjour,

A priori, on ne peut pas utilser ce type de syntaxe dans le tMysqlInput (...+ConvDate...).
Mettre en place un tmap avec un after au niveau du filtre.
Bonne journée.
kaskai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h36.


 
 
 
 
Partenaires

Hébergement Web