Talend : Vérification de la validité de dates dans un flux de données
par
, 27/08/2018 à 11h29 (1753 Affichages)
Voici un petit job Talend permettant de récupérer les lignes d'un flux de données dont les dates sont valides.
Supposons qu'on a un fichier contenant des données avec des dates saisies dans des formats différents, et que nous voulons récupérer toutes les lignes dont les dates sont dans un des formats suivants:
- yyyy-MM-dd HH:mm:ss
- yy-MM-dd HH:mm:ss
- dd/MM/yyyy
Exemple de données sources:
1;2010-02-09 00:00:00
2;2010-02-09 00:00:00
3;2010-13-09 00:00:00
4;10-02-09 00:00:00
5;2010-13-09
6;10-02-09 00:00:120
7;11/07/2018
Ainsi, on utilise un composant de lecture des donnes, si les données se trouvent
- Dans un fichier Excel => tFileInputExcel
- Dans un fichier plat => tFileInputDelimited
- Dans une base de données selon la BD => tOracleInput, tMySqlInput, etc..
Job permettant de faire ce traitement :
Configuration du composant de transformation tMap:
Expression de date valide :
Au niveau de la table cible valide_date, un click sur la petite flèche blanche permet d'afficher la zone de texte où on peut saisir notre expression de filtre permettant de définir ce qu'on considère comme étant une date valide.
C'est dans cette zone où on dira, si ma date est dans ce format là ou dans cet autre format etc.. c'est qu'elle est valide.
L'Opération nous permettant de faire cette vérification est une routine qui s'appelle isDate(String,String), elle est encapsulée dans la classe statique TalendDate.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TalendDate.isDate(row1.date,"yyyy-MM-dd HH:mm:ss") || TalendDate.isDate(row1.date,"yy-MM-dd HH:mm:ss") || TalendDate.isDate(row1.date,"dd/MM/yyyy")
On pourra assez facilement récupérer toutes les lignes contenant des dates non valides, en ajoutant une table cible de capture des rejets et en mettant simplement à true la propriété Catch output reject :
Résultats :
On constate que les lignes 1,2,4,7 du tLogRow_1 sont les dates qui sont valides selon les expressions définis et qu'on récupère les lignes rejetées dans le tLogRow_2.
Export éléments sources :
test_valide_date.zip