Dans ce tutoriel, vous apprendrez comment transférer des données d’un groupe à un autre en utilisant les input/ouput port sous Nifi, et transformer les données d’un fichier Excel.
Ce document fait partie d’un mini projet bout à bout de L’ETL NIFI.
Le document est la continuité du tutoriel “Extraction d’un fichier Excel” qui explique comment récupérer et convertir les données d’un fichier Excel sur Nifi pour réaliser ensuite les transformations qui seront expliquées ci-dessous.
Ce tutoriel s’appuie sur le fichier Excel suivant qui regroupe les ventes d’un magasin avec les informations suivantes :
- Date de la vente,
- Informations sur les produits et les commandes.
Avant de commencer, il est essentiel de :
- Installer et ouvrir NIFI sur son poste
- Disposer du fichier xlsx
- Réaliser le tutoriel “Extraction d’un fichier Excel”
Création d’un port de sortie (Output port) dans le processus input/ouput port sous Nifi
Dans le document précédent, vous avez extrait un fichier Excel, puis vous l’avez converti au format CSV. Ensuite, vous avez découpé ligne par ligne le fichier CSV pour préparer les données à être transformées.
A la sortie du processeur “Découpage Fichier CSV”, 100 759 lignes sont en attentes dans la queue. Ces lignes vont être déversées dans un nouveau groupe process qui s’appellera “Transformation”.
Pour que les éléments du processus groupe Extraction puissent sortir, il faut se servir du composant Output Port.
Cliquer sur le bouton Fin Extraction (flèche sortant d’un carré) pour créer un port de sortie.
Dans le champ Output Port Name, donner le nom “Fin Extraction”
Cliquer sur Apply
Relier le processeur “Découpage Fichier CSV” avec le composant Output Port.
Sortir du groupe en faisant un clique droit sur la page, puis en cliquant sur “Leave Group”
Création d’un nouveau groupe dans le processus input/ouput port sous Nifi
Dans le niveau supérieur, glisser le bouton process group (deux carrés dans un carré) sur la page.
Dans la nouvelle fenêtre, dans le champ Process Group Name. Ecrire “Transformation” pour nommer le groupe.
Cliquer sur Apply
Entrer dans le nouveau groupe process
Création d’un port d’entrée (Input Port) dans le processus input/ouput port sous Nifi
Dans le nouveau groupe extraction, créer un port d’entrée permettant de recevoir les données provenant du groupe d’extraction.
Cliquer sur le bouton input port (flèche entrant dans un carré), puis glisser le bouton au milieu de l’écran.
Dans la nouvelle fenêtre, dans le champ Port name, écrire Début Transformation
Cliquer sur Apply
Sur l’écran, faire un clic droit puis sélectionner leave group pour remonter sur un niveau supérieur et voir les deux groupes.
Relier les groupes Extraction et Transformation entre eux.
Dans la nouvelle fenêtre, cliquer sur Apply.
Entrer dans le groupe Extraction.
Mettre en marche le composant Output Port en le sélectionnant, puis en appuyant sur le bouton de lecture.
Le nombre d’éléments devrait diminuer et se propager vers la suite du processus en sortant du groupe puis en entrant dans le groupe Transformation.
Configuration de la transformation dans le processus input/ouput port sous Nifi
Cette partie introduit la transformation des données en supprimant les colonnes inutiles de chaque ligne du fichier Excel.
Les colonnes du fichier Excel sont les suivantes :
IDAdresse, Date Vente, Description Article, Numero Article, Marge ,Numero Commande, Montant, Quantite, Cout, Prix Unitaire, IDEquipe, Numero Client
A l’issue de cette partie, les colonnes Marge,Quantité, Cout, Prix Unitaire seront supprimées.
Aussi, l’ordre des deux dernières colonnes IDEquipe et Numero Client sera inversé.
Pour cela:
Créer un nouveau processeur ReplaceText en glissant le bouton Add Processor (sorte de cercle) sur la page.
Dans la nouvelle fenêtre, rechercher le processeur ReplaceText.
Sélectionner le processeur
puis cliquer sur Add
Entrer dans le processeur en double cliquant dessus.
Dans l’onglet Settings, dans le champ Name
Donner le nom Transformation des colonnes
Dans la partie Automatically Terminate Relationship, cocher sur failure pour que le processeur s’arrête lorsque le processeur est à l’état failure.
Aller dans l’onglet Properties, remplir le champ Search Value en renseignant l’expression régulière suivante :
^(.*,){1}(.*,){2}(.*)(.*,){5}(.*)
Input/ouput port sous Nifi : Compréhension de l’expression régulière
Sur le simulateur d’expression régulière suivant: https://regex101.com/
Rentrer l’expression régulière dans le champ Regular Expression et des exemples de données du fichier Excel dans Test String.
Les données d’exemples prises sont :
IDAdresse,Date Vente,Description Article,Numero Article,Marge,Numero Commande,Montant,Quantite,Cout,Prix Unitaire,IDEquipe,Numero Client
10009633,39083,Ebony Fresh Lima Beans,10813,0,216746,0,1,0,0,127,10009633
On peut observer que les colonnes des lignes renseignées sont réparties sous différentes couleurs.
Chaque couleur représente un groupe que la formule RegEx a partagé.
Les groupes vont permettre dans la suite du tutoriel à garder et supprimer les colonnes des lignes.
Groupe 1:
IDAdresse,Date Vente,Description Article,Numero Article,
Groupe 2:
Numero Commande,
Groupe 3:
Montant
Groupe 4:
IDEquipe,
Groupe 5:
Numero Client
Retour sur l’onglet propriété du processeur Transformation des colonnes, remplir le champ Replacement Value en renseignant les groupes suivants :
$1$2$3,$5$4
La formule récupère les groupes 1, 2, 3, 4 et 5. Puis, inverse les groupes 4 et 5 qui change l’ordre des colonnes.
Cliquer sur Apply
Créer un nouveau processeur qui s’appelle MergeContent
puis cliquer Add
Relier le processeur “Transformation des colonnes” et le nouveau processeur entre eux.
Sélectionner le processeur “Transformation des colonnes”
puis cliquer sur le bouton de lecture.
Des éléments devraient être en attente dans la queue comme sur l’image suivante :
Vérification des résultats dans la queue :
Faire un clic droit sur la queue, puis cliquer sur List queue pour observer les éléments en attentes.
Dans la nouvelle fenêtre, cliquer sur l’oeil de la première ligne. Vous observerez les résultats en sortie du processeur.
Résultats :
On remarque que le header ne possède plus les champs : Marge, Quantité, Coût, Prix Unitaire.
Également, les champs ID Equipe et Numero Client ont été inversés.
A travers ce tutoriel, vous avez appris à transférer les données d’un groupe à un autre en utilisant des inputs et outputs port. Puis, vous avez fait votre première transformation en supprimant des colonnes et en inversant l’ordre des colonnes.
Retrouvez la vidéo de ce tutoriel sur notre chaîne Youtube !
Depuis plus de 15 ans maintenant, je travaille sur des sujets liés à la BI et à l’amélioration des processus. J’ai participé à un grand nombre de projets en tant que leader technique sur de nombreuses technologies. De nature pédagogue, je donne également des cours de langage de programmation.
N’hésitez pas à me faire un retour sur cet article ou à me contacter sur LinkedIn pour échanger sur ces sujets!
Alexis
Laisser un commentaire