Lors du développement d'un pipeline d'intégration ou lors de son exécution planifiée en production, la visibilité sur ce qui se passe à l'intérieur du flux est cruciale. Quels fichiers ont été traités ? Combien de lignes ont été rejetées ? Quelle étape a pris le plus de temps ?
Pour répondre à ces besoins d'observabilité, Talend propose une panoplie de composants spécialisés pour afficher des messages dans la console, manipuler des variables en mémoire et interrompre proprement un job en cas d'erreur critique.
flowchart TD
subgraph Flux["Traçabilité des Données en Transit"]
LOGROW["<b>tLogRow</b><br>Inspection visuelle des colonnes<br>en format tableau dans la console"]
JAVAROW["<b>tJavaRow</b><br>Intervention ligne par ligne<br>et logs conditionnels"]
end
subgraph Controle["Contrôle Global du Job"]
JAVA["<b>tJava</b><br>Exécution de code ponctuel,<br>Gestion du globalMap"]
MSGBOX["<b>tMsgBox</b><br>Pop-up interactive pour l'utilisateur"]
WARN["<b>tWarn / tDie</b><br>Alertes et arrêt d'urgence contrôlé"]
end
style Flux fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0f172a
style Controle fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#0f172a
1. Inspecter les flux de données avec tLogRow#
Le composant tLogRow est le meilleur ami du développeur Talend. Il intercepte un flux de données Row > Main et affiche son contenu directement dans la console d'exécution sans nécessiter d'écrire dans une base de données.
Dans la vue Component, vous pouvez choisir entre deux modes d'affichage : - Basique (Basic) : Affiche les valeurs séparées par une virgule ou un point-virgule (idéal pour des flux massifs de plusieurs millions de lignes). - Tableau (Table) : Formate les enregistrements sous la forme d'un tableau ASCII élégant avec en-têtes et bordures (recommandé pour inspecter vos échantillons de test).
.----------+---------------+-----------------------.
| tLogRow_1 |
+----------+---------------+-----------------------+
| id_client| ville | chiffre_affaires |
+----------+---------------+-----------------------+
| 101 | Paris | 12450.50 |
| 102 | Lyon | 8700.00 |
| 103 | Marseille | 15200.75 |
+----------+---------------+-----------------------+
2. Exécuter du code ponctuel avec tJava#
Le composant tJava permet d'exécuter un bloc de code Java pur de manière ponctuelle (généralement relié par un lien de déclenchement OnSubjobOk ou OnComponentOk).
Il est particulièrement utilisé pour afficher des bannières d'étape horodatées et pour interagir avec le dictionnaire de mémoire partagée globalMap :
// 1. Afficher un message de statut horodaté
System.out.println("==================================================");
System.out.println("[ " + TalendDate.formatDate("HH:mm:ss", TalendDate.getCurrentDate()) + " ] - Démarrage du chargement du Datamart");
System.out.println("==================================================");
// 2. Définir une variable personnalisée dans la mémoire globale du job
String moisEnCours = TalendDate.formatDate("yyyy-MM", TalendDate.getCurrentDate());
globalMap.put("mois_traitement", moisEnCours);
// 3. Lire une variable générée automatiquement par un composant précédent
// (par exemple le nombre de lignes insérées par tPostgresqlOutput)
Integer nbLignes = (Integer) globalMap.get("tPostgresqlOutput_1_NB_LINE_INSERTED");
System.out.println("Lignes insérées avec succès : " + (nbLignes != null ? nbLignes : 0));
[!NOTE] Le
globalMapest une table de hachage Java (java.util.Map) native à Talend. Chaque composant y dépose automatiquement des métriques d'exécution (ex. :((Integer)globalMap.get("tFileInputDelimited_1_NB_LINE"))). Vous devez toujours caster l'objet récupéré vers son type d'origine ((String),(Integer),(Date)).
3. Intervenir sur chaque enregistrement avec tJavaRow#
Contrairement à tJava qui ne s'exécute qu'une seule fois par sous-job, tJavaRow se place au milieu d'un flux de données et s'exécute pour chaque ligne qui le traverse.
Il permet de lire les colonnes du flux entrant (input_row) et de renseigner les colonnes du flux sortant (output_row) tout en émettant des traces de débogage conditionnelles :
// Transfert et transformation des valeurs
output_row.id = input_row.id;
output_row.email = input_row.email.trim().toLowerCase();
// Alerte console immédiate si un montant suspect est détecté
if (input_row.montant < 0) {
System.err.println("⚠️ Anomalie détectée pour le client ID : " + input_row.id + " (Montant négatif : " + input_row.montant + ")");
}
4. Afficher une boîte de dialogue avec tMsgBox#
Lorsque vous concevez un job exécuté manuellement par un utilisateur, vous pouvez afficher une fenêtre contextuelle Windows/Java pour solliciter une confirmation ou signaler la fin d'un import :
- Titre (Title) :
Avertissement Import - Message :
"Attention, cette action va purger la table de production. Voulez-vous continuer ?" - Boutons :
Yes and NoouOK only
Le choix de l'utilisateur est enregistré dans le globalMap et peut être utilisé pour aiguiller la suite du flux avec un lien conditionnel RunIf :
// Condition RunIf vers la tâche suivante :
((String)globalMap.get("tMsgBox_1_RESULT")).equals("0") // 0 correspond au bouton OUI
5. Gestion professionnelle des erreurs : tWarn et tDie#
Dans une architecture d'intégration industrielle, on n'utilise pas de simples System.out.println() pour les erreurs. On emploie des composants de gestion d'incidents :
| Composant | Action technique | Effet sur l'exécution du Job |
|---|---|---|
tWarn |
Envoie un message d'avertissement au composant d'écoute tLogCatcher avec un niveau de sévérité (Warning/Error). |
Le job continue son exécution normalement. |
tDie |
Provoque l'arrêt immédiat et contrôlé du job, envoie un message d'échec critique et retourne un Code de sortie d'erreur (\(\neq 0\)). | Le job est immédiatement tué et interrompu. |
flowchart LR
A["tFileInputDelimited<br><i>Lecture du fichier source</i>"] -->|OnSubjobError| B["<b>tDie</b><br>Message: 'Fichier source manquant !'<br>Exit code: 4"]
A -->|OnSubjobOk| C["tPostgresqlOutput<br><i>Insertion en base</i>"]
style A fill:#f1f5f9,stroke:#64748b
style B fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#0f172a
style C fill:#dcfce7,stroke:#16a34a,color:#0f172a
[!IMPORTANT] L'utilisation de
tDieest indispensable si votre job est orchestré par un outil externe comme Apache Airflow ou un script shell : en renvoyant un code d'erreur explicite (ex. :4), Airflow détectera immédiatement l'échec et déclenchera les alertes d'incident configurées !
Vous maîtrisez désormais les outils de traçabilité et de débogage. Dans la prochaine leçon, nous allons explorer la bibliothèque de routines et de fonctions prédéfinies de Talend !
Commentaires