Dans vos flux d'intégration de données, vous avez régulièrement besoin de formater une chaîne de caractères, de vérifier si un e-mail est syntaxiquement valide, de générer une clé primaire numérique séquentielle ou de tester la nullité d'un champ dans un tMap.
Plutôt que de réécrire manuellement des algorithmes Java complexes, Talend intègre une bibliothèque de fonctions prêtes à l'emploi appelées Routines.
flowchart LR
subgraph Routines["Bibliothèque de Routines Système"]
R1["<b>TalendDataGenerator</b><br>Création de données de test (Mock Data)"]
R2["<b>TalendString</b><br>Nettoyage, chaînes aléatoires, validation"]
R3["<b>Relational</b><br>Gestion des valeurs nulles & conditions"]
R4["<b>Numeric</b><br>Séquences auto-incrémentées & arrondis"]
end
subgraph Usage["Utilisation dans le Job"]
MAP["tMap (Constructeur d'expressions)"]
JAVA["tJava / tJavaRow"]
end
Routines -->|Ctrl + Espace| Usage
style Routines fill:#f1f5f9,stroke:#64748b
style Usage fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0f172a
1. Comment appeler une fonction dans Talend ?#
Les routines sont des classes Java statiques accessibles depuis n'importe quel champ d'expression de Talend.
Pour afficher la liste des fonctions disponibles dans un composant (comme le tMap ou un tFilterRow) :
1. Cliquez dans la zone de texte de l'expression.
2. Appuyez sur la combinaison de touches Ctrl + Espace.
3. La liste d'auto-complétion s'affiche avec la signature de chaque fonction et sa documentation d'aide contextuelle.
2. Les principales familles de routines système#
1. TalendDataGenerator : Génération de données de test (Mock Data)#
Cette routine est idéale pour peupler une base de données de banc d'essai ou pour tester les performances d'un pipeline avec des données anonymisées :
| Fonction | Description | Exemple de résultat |
|---|---|---|
TalendDataGenerator.getFirstName() |
Renvoie un prénom aléatoire réaliste. | "Alexandre", "Sophie" |
TalendDataGenerator.getLastName() |
Renvoie un nom de famille aléatoire. | "Dupont", "Martin" |
TalendDataGenerator.getUsCity() |
Renvoie un nom de ville. | "New York", "San Francisco" |
TalendDataGenerator.getUsState() |
Renvoie un État ou une région. | "California", "Texas" |
2. TalendString : Traitement des chaînes de caractères#
Permet de manipuler, nettoyer et assainir les colonnes textuelles :
// Générer une chaîne alphanumérique aléatoire (ex. pour un mot de passe temporaire ou un token de 16 caractères)
String token = TalendString.getAsciiRandomString(16);
// Supprimer les espaces ou caractères superflus à gauche ou à droite
String nettoye = TalendString.talendTrim(" Donnée brute ", ' ', 0);
// Vérifier la validité de la syntaxe d'une adresse de courriel (renvoie un booléen)
boolean emailValide = TalendString.checkMailAddress(row1.email);
3. Relational : Tests conditionnels et gestion des valeurs nulles#
Dans un tMap, manipuler une valeur null peut provoquer la redoutée exception NullPointerException. La routine Relational sécurise vos calculs avec des expressions ternaires élégantes :
// Test de nullité avec remplacement par une valeur par défaut
Relational.ISNULL(row1.salaire) ? 0.0 : row1.salaire
// Condition ternaire complexe
row1.age >= 18 ? "Majeur" : "Mineur"
4. Numeric : Génération de séquences et clés synthétiques#
Dans un entrepôt de données (Data Warehouse), vous devez souvent générer des clés de substitution (Surrogate Keys) auto-incrémentées pour vos dimensions :
// Génère une séquence auto-incrémentée : nom de séquence, valeur de départ, pas d'incrément
Numeric.sequence("seq_clients", 1, 1)
// Génère un nombre entier aléatoire compris entre deux bornes incluses
Numeric.random(100, 999)
5. Mathematical : Calculs arithmétiques et arrondis#
// Arrondir un montant financier à deux décimales
Mathematical.ROUND(row1.chiffre_affaires, 2)
// Valeur absolue
Mathematical.ABS(row1.ecart_budget)
3. Créer sa propre Routine Java personnalisée#
Lorsque vos règles métiers d'entreprise dépassent le cadre des fonctions fournies, vous pouvez créer votre propre code Java réutilisable dans tout votre projet :
flowchart TD
A["1. Référentiel > Code > Routines"] -->|Clic droit > Créer une routine| B["2. Déclarer une classe Java"]
B --> C["3. Écrire une méthode 'public static'"]
C --> D["4. Utilisation immédiate dans le tMap !"]
style A fill:#f1f5f9,stroke:#64748b
style B fill:#fef3c7,stroke:#d97706
style C fill:#fed7aa,stroke:#ea580c,stroke-width:2px,color:#0f172a
style D fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#0f172a
Exemple pratique : Normaliser un numéro de téléphone#
- Dans le Référentiel, faites un clic droit sur Code > Routines > Créer une routine.
- Nommez la routine
NettoyageMetier. - Écrivez votre méthode Java statique :
package routines;
public class NettoyageMetier {
/**
* Nettoie un numéro de téléphone en supprimant tous les espaces, points et tirets.
* {talendTypes} String
* {Category} User Defined
* {param} string("+33 6.12-34-56 78") input: Le numéro brut
* {example} cleanPhoneNumber("+33 6.12-34-56 78") # renvoie "+33612345678"
*/
public static String cleanPhoneNumber(String numeroBrut) {
if (numeroBrut == null) {
return null;
}
// Supprime tout ce qui n'est pas un chiffre ou un '+' initial
return numeroBrut.replaceAll("[^0-9+]", "");
}
}
- Dans votre
tMap, appelez directement votre fonction personnalisée :
Vous maîtrisez désormais les routines et la création de code d'extension. Dans la prochaine leçon, nous allons nous concentrer sur la classe TalendDate pour manipuler, calculer et formater les dates sous toutes leurs formes !
Commentaires