Bonjour,
Savez-vous s'il est possible de calculer un quantième dans Talend à partir d'une date ? Si oui, comment ? (J'utiliserai pour ça un composant tJava mais je ne sais pas ensuite quoi écrire comme code). Si vous avez une piste, merci d'avance.
Version imprimable
Bonjour,
Savez-vous s'il est possible de calculer un quantième dans Talend à partir d'une date ? Si oui, comment ? (J'utiliserai pour ça un composant tJava mais je ne sais pas ensuite quoi écrire comme code). Si vous avez une piste, merci d'avance.
J'ai tenté cela mais ça ne marche pas :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // test si arg1 est renseigné dans le fichier de contexte // sinon lancement avec les paramètres saisies par utilisateur // Périodicité hebdomadaire le mardi // Période recherchée : semaine précédant la semaine de requêtage (du samedi au vendredi) // Exemple : Date requête = 20/11/2018 - Quantième début requête = 314 (samedi 10/11/2018) - Quantième fin de requête = 320 (vendredi 16/11/18) Date D=TalendDate.getCurrentDate(); if (context.arg1.equals("null")==true) { // calcul de arg1 : calcul du quantième du samedi de la semaine précédente // calcul de arg2 : calcul du quantième du vendredi de la semaine précédente int samedi=TalendDate.getPartOfDate("DAY_OF_YEAR", D); int vendredi=TalendDate.getPartOfDate("DAY_OF_YEAR", D); context.arg1=samedi; context.arg2=vendredi; } System.out.println("arg1 :"+context.arg1+" arg2 :"+context.arg2);
Il faudrait que j'ajoute -10 à samedi et -4 à vendredi mais je ne sais pas comment l'écrire.
Salut lumpys,
Vu la manière dont tu as écris ton code, je pense que c'est mieux de le faire comme suit, car ton arg1 et arg2 sont int, donc :
Il te suffit de faire une soustraction, normale :), j'ai pris comme date 20/11/2018.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date D = sdf.parse("20/11/2018"); if (context.arg1 == null ) { int samedi=TalendDate.getPartOfDate("DAY_OF_YEAR" , D); int vendredi=TalendDate.getPartOfDate("DAY_OF_YEAR", D); context.arg1=samedi-10; context.arg2=vendredi-4; } System.out.println("arg1 :"+context.arg1+" arg2 :"+context.arg2);
Résultat :
Pièce jointe 429871
Si tu prends current date tu aura ça :
Tu aura un résultat comme ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Date D=TalendDate.getCurrentDate(); if (context.arg1 == null ) { int samedi=TalendDate.getPartOfDate("DAY_OF_YEAR" , D); int vendredi=TalendDate.getPartOfDate("DAY_OF_YEAR", D); context.arg1=samedi-10; context.arg2=vendredi-4; } System.out.println("arg1 :"+context.arg1+" arg2 :"+context.arg2);
Pièce jointe 429875
En résumé il te faut modifier la condition de ton if en (context.arg1 == null ) , puis des soustractions normales.
Voilà.
Merci pour l'info, cela fonctionne.