Vous êtes sur la page 1sur 109

Pavel RACZKIEWICZ

2022

Formation ETL
TALEND Open Studio
Plan de la formation

I. INTRODUCTION A TALEND
II. NOTIONS SIMPLES
III. NOTIONS AVANCEES
IV. GESTION DES LOGS & ERREURS
INTRODUCTION A TALEND
❑ Qu’est ce qu’un ETL ?

❑ Interface de Talend

❑ Job exemple
ETL = Extract - Transform - Load
Introduction à Talend

❑ EXTRACT: Extraire les données à partir d’un source (base de


données, fichier plat…)

❑ TRANSFORM: Nettoyer, convertir, formater, agréger les données


❑ LOAD: Charger les données dans le système de stockage cible
Intérêt d’un ETL
Introduction à Talend

Faciliter l’extraction, le chargement et la transformation des données:

▪ Supprimer les erreurs et corriger les données

▪ Obtenir de la confiance sur la fiabilité des données

▪ Homogénéiser les données provenant de sources hétérogènes

▪ Structurer les données pour une utilisation dans des outils d’analyse et de reporting

▪ Faciliter les migration et reprises de données


Cas d’utilisation d’un ETL 1/2
Introduction à Talend

❑ Migration de données

Transfert de données entre des systèmes et formats différents

❑ Consolidations de données

Fusion de données hétéroclites dans un référentiel unique

❑ Intégration de données

Combiner les données de plusieurs sources pour obtenir une vision unifiée
Cas d’utilisation d’un ETL 2/2
Introduction à Talend

❑ Data Warehouse

Entrepôt de données pour de l’analyse décisionnelle. L’ETL permet de l’alimenter, et de


calculer des agrégats à des fins d’analyse et de reporting

❑ Synchronisation de données

Mise à jour régulière de 2 systèmes pour obtenir des données cohérentes et identiques
Avantages d’un ETL
Introduction à Talend

❑ Performances ❑ Gestion du travail en équipe


▪ Traitement multithreads ▪ Collaboration et sécurité

▪ Traitements parallélisés en masse ▪ Référentiel des projets

▪ Répartition des charges ▪ Découpage des environnements (DEV, PROD…)

❑ User-friendly ❑ Exécution
▪ IHM de conception des flux graphique ▪ Planification automatisé

▪ Monitoring
❑ Développement
▪ Composants réutilisables ❑ Produit éditeur
▪ Boites à outils ▪ Stabilité sur la durée via mises à jour

▪ Gestion des erreurs ▪ Support


Liste non-exhaustive des ETL
Introduction à Talend
Avantages de Talend
Introduction à Talend

❑ Nombreuses briques selon les besoins (ESB pour du temps réel, Big Data, MDM…)

❑ Nombre très important de connecteurs

❑ Interface moderne et intuitive

❑ Log des erreurs facile à comprendre et à analyser

❑ Génération du code en JAVA – pas une boite noire

❑ Communauté Open Source très développée sur internet

❑ Fonctionnement possible en mode ETL ou ELT


Interface de Talend 1/4
Introduction à Talend

Le Référentiel organise les


jobs, contextes, métadonnées,
et autres éléments du projet.
Interface de Talend 2/4
Introduction à Talend

Le Designer permet de
consulter le job dans
un mode graphique.
Interface de Talend 3/4
Introduction à Talend

La Palette contient l’ensemble


des composants que nous
pouvons glisser / déposer
dans le designer.
Interface de Talend 4/4
Introduction à Talend

Les onglets Run, Contextes,


Composants se situent dans la
zone basse de l’écran.
Création d’un job simple 1/8
Introduction à Talend

Pour se familiariser avec l’interface de l’outil,


création pas-à-pas d’un job simple dont le but
est d’envoyer un message « Hello world! » dans
la console.
Création d’un job simple 2/8
Introduction à Talend

❑ Etape 1

Créer un nouveau job dans le répertoire.


Création d’un job simple 3/8
Introduction à Talend

❑ Etape 2

En utilisant la barre de recherche de la palette,


rechercher le composant tRowGenerator (qui se
situe dans la catégorie Divers), qui va nous
permettre de générer des lignes avec des valeurs
définies.
Création d’un job simple 4/8
Introduction à Talend

❑ Etape 3

Glisser / déposer le composant tRowGenerator de la palette vers le designer (ignorer la petite icone
d’alerte).
Création d’un job simple 5/8
Introduction à Talend
2 3

❑ Etape 4

Paramétrer le composant tRowGenerator:

▪ Ajouter une nouvelle colonne 1 4

▪ Donner un nom à la nouvelle colonne

▪ Définir la fonction sur « … » (aucune fonction)

▪ Paramétrer à une seule ligne générée

▪ Définir la valeur à afficher 5


Création d’un job simple 6/8
Introduction à Talend

❑ Etape 5

Répéter les étapes 2 et 3 pour le composant tLogRow, qui va nous permettre de récupérer et
afficher les lignes générées dans la console Talend.
Création d’un job simple 7/8
Introduction à Talend

❑ Etape 6

Créer le lien entre les 2 composants:


1
▪ Click droit sur le composant de départ (ici, le
tRowGenerator)

▪ Sélectionner Row, puis Main


2
▪ Cliquer sur le composant de fin (tLogRow)

▪ Les messages d’erreur ont disparu sur les 2


composants
Création d’un job simple 8/8
Introduction à Talend

❑ Etape 7

Lancer le job dans l’onglet Exécuter, et vérifier


sa bonne exécution grâce à la console et à
l’affichage graphique dans le Designer.
NOTIONS SIMPLES
❑ Connecteurs: fichiers et BDD

❑ Métadonnées

❑ Le composant tMap

❑ Autres composants simples: tAggregate, tSort et tFilter

❑ Les contextes

❑ Composants avancés: tNormalize et tDenormalize

❑ Les boucles
Connecteurs pour les fichiers délimités
Notions simples

Les fichiers délimités se lisent grâce à


l’élément tFileInputDelimited, et sont écrits
grâce au tFileOutputDelimited.

Le schéma d’une source/cible de données


peut être défini en mode Built-in ou
Référentiel.
Connecteurs pour les fichiers délimités
Notions simples

❑ Schéma Built-in

▪ Schéma défini localement à la connexion

▪ Modification à la volée

▪ Non réutilisable
Connecteurs pour les fichiers délimités
Notions simples

❑ Schéma Référentiel

▪ Schéma défini grâce aux métadonnées

▪ Non modifiable localement

▪ Réutilisable
Métadonnées – Fichier délimité 1/4
Notions simples

❑ Etape 1

Dans le Référentiel, créer un nouveau fichier


délimité dans les métadonnées
Métadonnées – Fichier délimité 2/4
Notions simples

❑ Etape 2

Sélectionner un fichier qui va servir de


modèle pour le schéma générique de fichier
Métadonnées – Fichier délimité 3/4
Notions simples 4

❑ Etape 3
1
Paramétrer le fichier:
2
▪ Séparateur de champ

▪ Séparateur de lignes
3
▪ En-tête

▪ Encodage
Métadonnées – Fichier délimité 4/4
Notions simples

❑ Etape 5

Le format des champs est généré


automatiquement – possibilité de le
modifier à cette étape:
1 2 3 4 5
▪ Clé primaire

▪ Type

▪ Nullable

▪ Modèle de date

▪ Longueur et précision
Métadonnées – Base de données (MySQL) 1/3
Notions simples

❑ Etape 1

▪ Créer une nouvelle connexion de base de


données dans le référentiel

▪ Paramétrer la connexion
Métadonnées – Base de données (MySQL) 2/3
Notions simples

❑ Etape 2

Développer la connexion créée, puis


sélectionner « Récupérer le schéma » afin de
créer les métadonnées des tables de la base.
Métadonnées – Base de données (MySQL) 3/3
Notions simples

❑ Etape 3

▪ Sélectionner les schémas des tables à


importer

▪ Il est ensuite possible d’altérer les formats


des champs
Métadonnées
Notions simples

Il est possible de glisser / déposer directement une métadonnée à partir du référentiel dans le
designer pour créer un composant, sans passer par la palette.

2
1
Transformer la donnée: le tMap
Notions simples

Talend met à notre disposition de nombreux


composants qui permettent de manipuler les
données. L’élément le plus important et le plus
complet est le tMap.

Nous allons concevoir un job simple qui


permet de voir ses différentes utilisations.
Transformer la donnée: le tMap
Notions simples

La source utilisée comme base pour cette exemple est un fichier plat représentant
l’ensemble des voitures présentes dans un garage. Nous avons déjà créé les métadonnées qui lui
sont associées.
Transformer la donnée: le tMap
Notions simples

Nous allons créer un job simple qui va formater différents champs de notre fichier garage:

▪ Définir le format de la date

▪ Concaténer la marque et le modèle de la voiture

▪ Rajouter « km » après le kilométrage

▪ Transformer le flag de boite de vitesse en libellé explicite

▪ Ajouter le nom du garage à chaque ligne


Transformer la donnée: le tMap 1/13
Notions simples

❑ Etape 1

▪ Placer les composants tFileInputDelimited (à partir des métadonnées), tMap et tLogRow

▪ Créer un lien entre le fichier source et le tMap

▪ Ne pas relier pour le moment le tMap et le tLogRow


Transformer la donnée: le tMap 2/13
Notions simples

❑ Etape 2

▪ Ouvrir le composant tMap

▪ L’entrée est automatiquement


paramétrée à partir de la source

▪ Aucune sortie n’est pour le moment


définie
Transformer la donnée: le tMap 3/13
Notions simples

❑ Etape 3

▪ A partir du panneau de droite, créer une nouvelle sortie


Transformer la donnée: le tMap 4/13
Notions simples

❑ Etape 4

Créer les champs de la cible:

▪ ID_Voiture et ID_Proprietaire de type INT

▪ Modèle (qui sera une concaténation de Marque et de Modèle) de type STRING de taille 100

▪ Kilométrage de type Sting de taille 12

▪ Date_achat de type DATE de format « dd/MM/yyyy »

▪ Boite de vitesse et Garage de type STRING de taille 20


Transformer la donnée: le tMap 5/13
Notions simples

❑ Etape 4
Transformer la donnée: le tMap 6/13
Notions simples

❑ Etape 5

▪ Mapper les champs ID_Voiture et ID_Proprietaire entre la source et la cible, sans y apporter de
changements
Transformer la donnée: le tMap 7/13
Notions simples

❑ Etape 6

▪ Mapper les champs Marque et Modèle avec le champ Modèle en cible, avec la code suivant:
row1.Marque + " " + row1.Modele
Transformer la donnée: le tMap 8/13
Notions simples

❑ Etape 7

▪ Mapper le champ Kilométrage avec le champ Kilométrage en cible, avec la code suivant:
row1.Kilometrage + "km"
Transformer la donnée: le tMap 9/13
Notions simples

❑ Etape 8

▪ Mapper le champ Date_achat avec Date_achat


en cible, en mettant une date par défaut
(s’aider du constructeur d’expressions):

(row1.Date_achat.isEmpty()) ?
TalendDate.parseDate("dd/MM/yyyy","01/01/2000") :
TalendDate.parseDate("dd/MM/yyyy",row1.Date_achat)
Transformer la donnée: le tMap 10/13
Notions simples

❑ Etape 9

▪ Mapper le champ Boite_de_vitesse avec


Boite_de_vitesse en cible avec le code suivant
(s’aider du constructeur d’expressions):

(row1.Boite_de_vitesse == ‘M’)?
("Manuelle") :
("Automatique")
Transformer la donnée: le tMap 11/13
Notions simples

❑ Etape 10

▪ Créer une nouvelle variable var_garage de type String avec une valeur fixe « Garage BLUE »

▪ Mapper la variable var_garage avec le champ Garage en cible

2
Transformer la donnée: le tMap 12/13
Notions simples

❑ Etape 11

▪ Relier le tMap avec le tLog via la sortie out1


Transformer la donnée: le tMap 13/13
Notions simples

❑ Etape 12

▪ Exécuter le job
Filtrer la donnée: le tMap
Notions simples
1

2
Le tMap permet de filtrer les données à
envoyer dans la cible, à la fois au niveau des
entrées et au niveau des sorties.

3
Combiner la donnée: le tMap
Notions simples

Le tMap permet également d’unir deux (ou


plus) sources de données.

Nous allons voir un job simple qui permet de


combiner les voitures de la partie précédente
avec des clients, répertoriés dans un fichier
diffèrent.
Combiner la donnée: le tMap
Notions simples

La source utilisée pour les données des clients est un autre fichier plat. Nous avons déjà
créé les métadonnées qui lui sont associées.
Combiner la donnée: le tMap 1/7
Notions simples

❑ Etape 1

▪ Placer un composants tFileInputDelimited à


partir des métadonnées Client

▪ Créer un lien entre le fichier Client et le tMap

▪ Le nouveau lien apparait comme un look-up


Combiner la donnée: le tMap 2/7
Notions simples

❑ Etape 2

▪ Pour définir une jointure, remplir le champ Clé


d’expression d’une entrée look-up avec le
champ associé du main (ou d’un autre look-up)
Combiner la donnée: le tMap 3/7
Notions simples 1

❑ Etape 3
2
Définir le type de jointure:

▪ Unique / Multiple 3

▪ Inner join / left join


Combiner la donnée: le tMap 4/7
Notions simples

❑ Etape 4

Créer une nouvelle sortie out1 avec les champs suivants:

▪ Nom complet

▪ Modèle
Combiner la donnée: le tMap 5/7
Notions simples

❑ Etape 5

Créer une nouvelle sortie out1 avec les champs suivants:

▪ Nom

▪ Marque
Combiner la donnée: le tMap 6/7
Notions simples

❑ Etape 6

▪ Mapper les champs Nom et Marque des 2 entrées


Combiner la donnée: le tMap 7/7
Notions simples

❑ Etape 7

▪ Ajouter un nouveau tLogRow à la sortie out1


du tMap

▪ Exécuter pour voir le résultat


Filtrer la donnée: tFilterRow
Notions simples

Le composant qui permet d’effectuer un filtre sur


les données est le tFilterRow. Il est possible de
combiner plusieurs conditions de filtre.
Agréger la donnée: tAggregateRow
Notions simples

Le composant qui permet d’effectuer des agrégation sur les données est le tAggregateRow.

Pour cet exemple, nous allons calculer le nombre de voitures présentes dans notre garage par
marque de voiture.
Agréger la donnée: tAggregateRow 11/4
Notions simples

❑ Etape 1

▪ Le schéma d’entrée est défini à partir de la


cible – il faut par contre définir le schéma de
sortie

▪ Sélectionner le champ Marque, et le


déplacer dans la sortie grâce à l’icone de la
4
2
flèche

▪ Créer un nouveau champ nommé Compteur


de type Integer
3
Agréger la donnée: tAggregateRow 2/4
Notions simples

❑ Etape 2

Définir les champs sur lesquels nous allons agréger la donnée – dans l’exemple, le champ Marque.
Agréger la donnée: tAggregateRow 3/4
Notions simples

❑ Etape 3

Définir le type d’agrégation, ainsi que le champ de la sortie dans lequel elle sera stockée – dans
l’exemple, le champ Compteur avec l’agrégation Count.
Agréger la donnée: tAggregateRow 4/4
Notions simples

❑ Etape 4

Exécuter le job pour en vérifier le résultat.


Trier la donnée: tSortRow
Notions simples

Le composant qui permet de trier les données est le tSortRow.

Pour cet exemple, nous allons trier les voitures dans l’ordre croissant de leur kilométrage.
Trier la donnée: tSortRow 1/2
Notions simples

❑ Etape 1

Sélectionner le champ sur lequel effectuer le tri – dans l’exemple, le champ Kilométrage.
Trier la donnée: tSortRow 2/2
Notions simples

❑ Etape 2

Exécuter le job pour en vérifier le résultat.


COMPOSANTS AVANCES
❑ Les contextes

❑ Les boucles

❑ Données semi-structurées: XML

❑ Ordonnancement

❑ Gestion des Logs: tAssert, tChronometre, tFlow, tStatCatcher, tSetEnv

❑ Gestion des Erreurs: tWarn, tDie


Les contextes
Notions simples

Talend permet de définir les valeurs des variables au moment de l’exécution d’un job grâce aux
contextes.

Nous allons voir un job simple qui permet d’afficher un message en fonction du contexte choisi à
l’exécution.
Les contextes 1/7
Notions simples

❑ Etape 1

Dans le repository, créer un nouveau groupe de


contextes
Les contextes 2/7
Notions simples

❑ Etape 2

Créer 2 nouveaux Contextes


Les contextes 3/7
Notions simples

❑ Etape 3

▪ Créer une variable Message de type String

▪ Définir une valeur pour les 2 contextes crées à l’étape précédente


Les contextes 4/7
Notions simples 3

❑ Etape 4

▪ Ajouter le groupe de contextes créée au job


dans l’onglet Contexte
1

2
Les contextes 5/7
Notions simples

❑ Etape 5

▪ Dans le composant tFixedFlowInput, définir la valeur de sortie sur la variable « context.Message »


Les contextes 6/7
Notions simples

❑ Etape 6

▪ Dans l’onglet Exécution, vérifier que les valeurs des variables changent selon le contexte choisi
Les contextes 7/7
Notions simples

❑ Etape 7

▪ Exécuter le job avec les 2 contextes, et vérifier les résultats


Les contextes
Notions simples

A la création d’un schéma de métadonnées, il est possible d’exporter les valeurs de celui-ci dans un
contexte, pour changer facilement d’environnement de travail par exemple.
Boucles
Notions avancées

Talend permet d’exécuter automatiquement une tache ou un job dans une boucle grâce à plusieurs
composants:

▪ tLoop pour une boucle classique pour un nombre défini d’itérations

▪ tForEach pour une boucle sur un ensemble de valeurs définies

▪ tFileList pour boucler sur l’ensemble des fichiers contenus dans un répertoire

▪ tFlowToIterate pour transformer un flux d’entrée en itération

▪ tIterateToFlow pour transformer une itération en flux de sortie


Normaliser la donnée: tNormalize
Notions avancées

Le composant qui permet de séparer les lignes d’un flux entrant en plusieurs nouvelles lignes en se
basant sur un champ est le tNormalize.

Pour cet exemple, nous allons récupérer une liste d’élèves, et la décomposer en se basant sur les
cours auxquels ils assistent.
Normaliser la donnée: tNormalize 1/3
Notions avancées

❑ Etape 1

▪ Créer un job avec un fichier en entrée, un tNormalize et un tLog en sortie

▪ Si besoin, synchroniser la sortie du tNormalize avec la source


Normaliser la donnée: tNormalize 2/3
Notions avancées

❑ Etape 2

▪ Dans le tNormalize, indiquer la colonne et le séparateur qui vont servir à éclater les lignes de la
source

1 2
Normaliser la donnée: tNormalize 3/3
Notions avancées

❑ Etape 3

▪ Exécuter le job, et vérifier le résultat obtenu


Dénormaliser la donnée: tDenormalize
Notions avancées

Le composant qui permet de dénormaliser un flux entrant en fonction d’une colonne est le
tDenormalize.

Pour cet exemple, nous allons récupérer une liste de fruits, et fusionner en un seul champ diverses
variétés possibles d’un même fruit.
Dénormaliser la donnée: tDenormalize 1/3
Notions avancées

❑ Etape 1

▪ Créer un job avec un fichier en entrée, un tDenormalize et un tLog en sortie

▪ Si besoin, synchroniser la sortie du tDenormalize avec la source, et augmenter la taille de la


colonne à dénormaliser.
Dénormaliser la donnée: tDenormalize 2/3
Notions avancées

❑ Etape 2

▪ Dans le tNormalize, indiquer la colonne et le séparateur qui vont servir à fusionner les lignes de la
source

1 2
Dénormaliser la donnée: tDenormalize 3/3
Notions avancées

❑ Etape 3

▪ Exécuter le job, et vérifier le résultat obtenu


Données semi-structurées - XML
Notions avancées

Talend est capable de traiter des fichiers semi-


structurés en s’appuyant sur les expressions
XPath.

Nous allons voir un exemple de lecture d’un


fichier XML composé de plusieurs boucles.
Données semi-structurées - XML
Notions avancées

❑ Rappels sur les expressions XPath

▪ Le nœud courant peut être récupéré à l'aide de "."

▪ Le nœud père peut être récupéré à l'aide de ".."

▪ Un élément se récupère à l'aide de son chemin relatif par rapport à l'élément de boucle

▪ Un attribut se récupère à l'aide de "@nom_attribut"


Données semi-structurées – XML 1/7
Notions avancées

❑ Etape 1

▪ Placer les composants tFileInputXML et tLog

▪ Définir le fichier source


Données semi-structurées – XML 2/7
Notions avancées

❑ Etape 2

▪ Définir requête XPath qui va servir à boucler sur le fichier


Données semi-structurées – XML 3/7
Notions avancées

❑ Etape 3

▪ Modifier le schéma de sortie avec les colonnes à récupérer


Données semi-structurées – XML 4/7
Notions avancées

❑ Etape 4

▪ Mapper les colonnes avec la requête XPath correspondante


Données semi-structurées – XML 5/7
Notions avancées

❑ Etape 5

▪ Visualiser les données en sortie


Données semi-structurées – XML 6/7
Notions avancées

❑ Etape 6

▪ Pour récupérer les données dans une boucle imbriquée, il faut se placer au niveau le plus fin de
boucle
Données semi-structurées – XML 7/7
Notions avancées

❑ Etape 7

▪ Visualiser les données en sortie


Ordonnancement: tRunJob
Notions avancées

❑ Composant Run

tRunJob: permet de maitriser des systèmes de


job complexe. Il exécute un job spécifié dans ses
propriétés et un contexte défini
Composants système
Notions avancées

❑ Composant Système

tSystem permet d’exécuter des commandes


systèmes
Livraisons
Notions avancées

❑ Exécutable
Livraisons
Notions avancées

❑ Exécutable
Livraisons
Notions avancées

❑ Exécutable
Gestion des Logs: tAssertCatcher
Gestion des Logs & Erreurs

❑ Composant Assert

tAssertCatcher génère un flux de données


contenant les informations de statut d'une
exécution de job
Gestion des Logs: tAssert
Gestion des Logs & Erreurs

❑ Composant Assert

tAssert: permet de tester une exécution de Job. Il génère une assertion booléenne permettant
d'alimenter le statut d'exécution du tAssertCatcher
Gestion des Logs: tChronometre
Gestion des Logs & Erreurs

❑ Composant chronomètre

▪ tChronometreStart

▪ tChronometreStop
Gestion des Logs: tFlow
Gestion des Logs & Erreurs

❑ Composant Flow

▪ tFlowMeter: Compte le nombre de lignes


traités dans un flux spécifié

▪ tFlowMeterCatcher: il fonctionne comme


une fonction de log déclenchée par
l'utilisation du tFlowMeter
Gestion des Logs: tStatCatcher
Gestion des Logs & Erreurs

❑ Composant StatCatcher

tStatCatcher regroupe les métadonnées du job


et des composants coché "tStatCatcher". Il
collecte et transfère les données de log vers le
composant suivant
Gestion des Erreurs: tDie
Gestion des Logs & Erreurs

❑ Composants Die et Warning

tDie envoie une erreur et arrête le job en cours


d'exécution
Gestion des Erreurs: tWarn
Gestion des Logs & Erreurs

❑ Composants Die et Warning

tWarn envoie un message d'avertissement mais


n'arrête pas l'exécution du job

Vous aimerez peut-être aussi