Mise en œuvre de PDI
Transformation PDI n°1
1. Présentation générale des transformations
Dans ce chapitre, 24 transformations sont présentées. Ces traitements font partie des opérations effectuées classiquement en matière d’ETL.
Pour chacune de ces transformations ETL de nombreuses indications techniques sont données (y compris sous forme de recopies d’écran). Le lecteur peut, s’il le souhaite, les reconstituer. Un nom est également préconisé pour la sauvegarde de chacune d’entre elles.
2. Présentation des données
Le jeu de données utilisé dans le cadre de ce chapitre est volontairement simple (peu de tables et une volumétrie réduite). Les données sont principalement stockées dans des bases de données gérées par le SGBD Open Source MySQL. Pour certaines transformations, un recours à d’autres SGBD (Microsoft Access, Microsoft SQL Server) est effectué. Des classeurs Microsoft Excel, des fichiers texte de différents formats (fichiers plats, XML) sont aussi utilisés.
La base de données principale (de nom TDF2003-1), de laquelle seront en général extraites les données, est au format MySQL. Pour déployer simplement cette base de données sous MySQL, les utilisateurs sous Windows ont le choix entre plusieurs solutions Web packagées (intégrant le serveur Web Apache, le serveur de gestion de bases de données MySQL et le logiciel phpMyAdmin pour l’administration aisée des bases de données) :
-
EasyPHP : téléchargeable à l’adresse http://www.easyphp.org/
-
WampServer : téléchargeable à l’adresse http://www.wampserver.com/
-
Xampp : téléchargeable à l’adresse http://sourceforge.net/projects/xampp/
Une suite Web intégrant ces mêmes composants est aussi disponible pour MacOS (Mamp). La majorité des distributions Linux intègrent ces composants de manière native.
La base de données MySQL TDF2003-1 contient cinq tables dans lesquelles sont entreposées des données liées au Tour De France cycliste édition 2003. Les scripts SQL permettant de générer les structures des tables de cette base et d’y stocker des enregistrements...
Transformation PDI n°2
1. Objectif de la transformation
Le traitement réalisé par cette seconde transformation est quasi-identique à celui de la transformation précédente. La seule différence est le fait que la source de données en entrée est une base de données Microsoft SQL Server nommée TDF2003. Pour constituer cette base de données il faut disposer d’une version de ce SGBD (une version Express gratuite peut suffire pour réaliser l’opération).
La base de données Microsoft SQL Server TDF2003 contient cinq tables identiques en terme de structure et de contenu à celles de la version MySQL (TDF2003-1). Les scripts SQL permettant de générer les structures des tables de cette base et d’y stocker des enregistrements sont disponibles sur le site des Editions ENI.
La copie de l’intégralité des données de la table Microsoft SQL Server COUREUR dans la table MySQL de nom COUREUR2 stockée dans la seconde base de données MySQL de nom TDF2003-2 est prévue. La structure de la table COUREUR2 doit exister pour cette transformation. Il sera vu ultérieurement la possibilité de créer la structure de la table cible à la volée par un script SQL.
La transformation souhaitée comprend les étapes suivantes :
-
Extraction table (table COUREUR)
-
Insertion table (table...
Transformation PDI n°3
1. Objectif de la transformation
Dans le cadre de cette transformation, trois étapes sont à prévoir :
-
Extraction table : extraction des données de la table COUREUR (entreposée dans la base de données MySQL de nom TDF2003-1)
-
Tri lignes : tri sur le champ IDENTITE_COUREUR
-
Insertion table : report des informations lues et triées dans une table COUREUR3 (entreposée dans une base de données MySQL de nom TDF2003-2)
Le traitement réalisé par cette transformation est quasi-identique à celui de la transformation n°1.
Sur la nouvelle transformation, il faudra toutefois :
-
intégrer l’étape de tri et la paramétrer,
-
ajouter un lien supplémentaire (on peut aussi cliquer-glisser une étape non rattachée aux autres sur un lien existant et dans ce cas un assistant se déclenche),
-
modifier l’étape d’insertion dans une table pour remplacer la référence à la table COUREUR1 par une référence à la table COUREUR3.
Pour gagner un temps précieux, une sauvegarde de la transformation n°1 pourra être réalisée par la commande de menu Fichier - Enregistrer sous.
Nom de la transformation : PDI_03 - Transfert global table d’une BDD MySQL dans autre BDD MySQL (avec tri).
2. Tri
Position de l’étape dans...
Transformation PDI n°4
1. Objectif de la transformation
Dans le cadre de cette transformation, quatre étapes sont à prévoir :
-
Extraction table : extraction des données de la table COUREUR (entreposée dans la base de données MySQL de nom TDF2003-1)
-
Filtrage lignes : sélection des coureurs de nationalité française
-
Tri lignes : tri des données sur le champ IDENTITE_COUREUR
-
Insertion table : report des informations lues et triées dans une table COUREUR4 (entreposée dans une base de données MySQL de nom TDF2003-2)
Le traitement réalisé par cette transformation est quasi-identique à celui de la transformation n°3.
Sur la nouvelle transformation, il faudra toutefois :
-
intégrer l’étape de sélection et la paramétrer,
-
ajouter un lien supplémentaire,
-
modifier l’étape d’insertion dans une table pour remplacer la référence à la table COUREUR3 par une référence à la table COUREUR4.
La transformation n°3 pourra servir de base à celle à construire ici.
Nom de la transformation : PDI_04 - Transfert global table d’une BDD MySQL dans autre BDD MySQL (avec sélection et tri).
2. Sélection
Position de l’étape dans la palette : Contrôle de flux - Filtrage lignes.
Le paramétrage...
Transformation PDI n°5
1. Objectif de la transformation
Cette transformation va montrer qu’il est tout à fait envisageable de mettre en œuvre deux flux s’exécutant de manière parallèle.
Dans la transformation précédente, les coureurs français ont été copiés à partir d’une table MySQL (COUREUR) d’une première base de données (TDF2003-1) vers une table MySQL (COUREUR4) d’une seconde base de données (TDF2003-2).
Dans le traitement présenté ci-après, un second flux sensiblement identique au premier sera ajouté et la transformation comportera les étapes suivantes :
-
Extraction table : extraction des données de la table COUREUR (entreposée dans la base de données MySQL de nom TDF2003-1)
-
Filtrage lignes : sélection des coureurs de nationalité française
-
Tri lignes : tri des données sur le champ IDENTITE_COUREUR
-
Insertion table : report des informations lues et triées dans une table COUREUR5-1 (entreposée dans une base de données MySQL de nom TDF2003-2)
-
Extraction table : extraction des données de la table COUREUR (entreposée dans la base de données MySQL de nom TDF2003-1)
-
Filtrage lignes : sélection des coureurs n’ayant pas la nationalité française...
Transformation PDI n°6
1. Objectif de la transformation
Dans les traitements ETL, il est très fréquent que l’on ait recours à des données stockées dans des fichiers texte (on dit aussi souvent fichiers plats ou ASCII). Plusieurs présentations des données peuvent être rencontrées :
-
Fichier texte au format délimité (ou CSV)
-
Les valeurs pour un individu (enregistrement) sont disposées ligne par ligne et sont séparées les unes des autres par un délimiteur (le point-virgule en règle générale). Un retour-chariot (retour à la ligne) sépare chaque individu.
-
Exemple :
NOM;ADRESSE;CP;VILLE;MONTANT
MARTIN RENE;RUE DE LA GARE;35000;RENNES;2000
SIMON BERNARD;BD DE LA LIBERTE;35000;RENNES;3000
GUSTAVE MONIQUE;BD DE VITRE;35000;RENNES;3500
-
-
Fichier texte au format aligné (largeur/longueur fixe) :
-
Les valeurs pour un individu (enregistrement) sont disposées ligne par ligne et sont séparées les unes des autres par un certain nombre d’espaces (parfois aussi par une tabulation et dans ce cas on se retrouve face à un fichier texte délimité par des tabulations). Toutes les valeurs d’un même champ sont alignées sur une même position verticale.
-
Exemple :
-
NOM |
ADRESSE |
CP |
VILLE |
MONTANT |
MARTIN RENE |
RUE DE LA GARE |
35000 |
RENNES |
2000 |
SIMON BERNARD |
BD DE LA LIBERTE |
35000 |
RENNES |
3000 |
GUSTAVE MONIQUE |
BD DE VITRE |
35000 |
RENNES |
3500 |
Le contenu de ce type de fichiers est visualisable directement par un éditeur de textes. Ces fichiers sont généralement importés à partir de systèmes de gestion de base de données, d’applications de gestion (comptabilité, facturation, gestion commerciale...). Les composants logiciels...
Transformation PDI n°7
1. Objectif de la transformation
Au niveau des SGBD, il est fréquent que l’on ait recours à des requêtes SQL pour réaliser des traitements sur les données. De nombreuses étapes de PDI, comme l’extraction des données depuis une table vue précédemment, sont basées sur des séquences de code SQL.
Pentaho Data Integration dispose d’une étape spécifique dont le rôle unique est d’embarquer du code SQL. Cette étape permet de réaliser de multiples types de transactions sur les données d’un SGBD (création de structures des tables, suppression de tables, suppression de données, mise à jour de données, sélections y compris les plus complexes...).
Dans les transformations vues jusqu’à présent, une importante contrainte existait, l’existence de la table cible dans la base de données MySQL TDF2003-2.
La transformation n°7 va exécuter un code SQL de création d’une structure d’une table MySQL de nom TEST.
Pour paramétrer ce type d’étape, il est préférable de tester le code SQL auparavant directement dans le SGBD concerné, sous phpMyAdmin pour MySQL par exemple.
Le code de la requête SQL prévue est :
CREATE TABLE `TEST` (
`NOM_PRENOM` CHAR( 40 ) NOT NULL ,
`AGE`...
Transformation PDI n°8
1. Objectif de la transformation
Dans cette transformation, trois étapes sont à prévoir :
-
Création d’une table COUREUR8 dans la base de données MySQL TDF2003-2 par script SQL (un test d’existence de la table COUREUR8 est réalisé),
-
Lecture depuis la table COUREUR de la BDD MySQL TDF2003-1,
-
Écriture dans la table COUREUR8 de la BDD MySQL TDF2003-2.
Nom de la transformation : PDI_08 - Création structure de table MySQL COUREUR8 par script SQL et insertion de données.
2. Script SQL
Dans cette transformation, seule l’étape SQL mérite que l’on s’y arrête car on y découvre comment tester la présence de la table MySQL COUREUR8 avant éventuellement de la créer :

3. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Transformation PDI n°9
1. Objectif de la transformation
Dans cette transformation, quatre étapes sont à prévoir :
-
Création d’une table EQUIPE dans la BDD MySQL TDF2003-2 par script SQL (un test d’existence de la table EQUIPE est réalisé),
-
Lecture du fichier ASCII de longueur fixe Equipe.txt,
-
Écriture dans la table EQUIPE de la BDD MySQL TDF2003-2 (le contenu de la table EQUIPE est supprimé à chaque exécution de la transformation),
-
Écriture du compte-rendu dans l’onglet Trace.
Dans cette transformation deux nouvelles étapes sont utilisées : la lecture d’un fichier ASCII de largeur fixe et l’affichage des enregistrements du flux sur l’onglet Trace. L’étape Trace est fréquemment utilisée en phase de test.
Nom de la transformation : PDI_09 - Lecture fichier ASCII de longueur fixe et écriture dans table d’une BDD MySQL.
2. Étape de lecture d’un fichier texte de longueur fixe
Position de l’étape dans la palette : Extraction - Extraction depuis fichier longueur fixe.
Le nombre de paramètres à fournir pour ce type d’étape est là encore important.
Les paramétrages initiaux de ce type d’étape sont :

Certaines propriétés doivent être modifiées :
-
Nom étape : à personnaliser...
Transformation PDI n°10
1. Objectif de la transformation
Dans cette transformation, quatre étapes sont à prévoir :
-
Lecture depuis la table EQUIPE_BUDGET stockée dans une BDD Microsoft Access de nom TDF2003-1.mdb (téléchargeable sur le site des Editions ENI),
-
Cumul des valeurs du champ BUDGET_EQUIPE,
-
Écriture du cumul des budgets dans le fichier ASCII Cumul_budget.txt,
-
Affichage d’un compte-rendu à l’écran (Trace).
Cette transformation présente deux nouvelles étapes, l’agrégation de valeurs et l’écriture dans un fichier texte.
La structure de la table EQUIPE_BUDGET de la base de données Microsoft Access de nom TDF2003-1.mdb est :
-
CODE_EQUIPE : Format char(3) et clé primaire sans doublons
-
NOM_EQUIPE : Format char(20)
-
BUDGET_EQUIPE : Format double
Nom de la transformation : PDI_10 - Lecture table d’une BDD Access et écriture dans un fichier ASCII d’un cumul de champ.
2. Étape d’accès à une base de données Microsoft Access
Position de l’étape dans la palette : Extraction - Extraction depuis une base Access.
Contrairement à ce qui a été vu pour une base de données MySQL, il n’est pas ici nécessaire de paramétrer une connexion (cf. Navigateur - Connexions). Il suffit dans les propriétés de l’étape...
Transformation PDI n°11
1. Objectif de la transformation
Dans cette transformation, les trois étapes suivantes sont à prévoir :
-
Création d’une table COUREUR11 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table COUREUR11 est réalisé),
-
Lecture depuis la table COUREUR de la BDD MySQL TDF2003-1 avec sélection des champs DOSSARD_COUREUR et IDENTITE_COUREUR,
-
Écriture dans la table COUREUR11 de la BDD MySQL TDF2003-2 (le contenu de la table COUREUR11 est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_11 - Transfert partiel (limitation à certains champs) d’une table d’une BDD MySQL dans une autre BDD MySQL.
2. Étape de lecture
La sélection des champs extraits de la table COUREUR se fait dans la requête SQL intégrée dans l’étape de lecture, comme ceci :
SELECT DOSSARD_COUREUR, IDENTITE_COUREUR FROM COUREUR
3. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Transformation PDI n°12
1. Objectif de la transformation
Dans cette transformation, deux étapes sont à prévoir :
-
Lecture de la totalité de la table PAYS de la BDD MySQL TDF2003-1,
-
Écriture dans un classeur Microsoft Excel Pays.xls.
Nom de la transformation : PDI_12 - Transfert global table d’une BDD MySQL dans un classeur Excel.
2. Étape de lecture
Cette étape n’est pas différente des autres étapes de lecture vues dans les transformations précédentes.
La table PAYS (26 enregistrements) présente la structure suivante :
-
CODE_PAYS : Format char(3) et clé primaire sans doublons
-
NOM_PAYS : Format char(20)
3. Étape d’écriture dans un classeur Microsoft Excel
Position de l’étape dans la palette : Alimentation - Alimentation fichier Excel.
Sur l’onglet Fichier de l’étape, on signale le nom du fichier et son chemin. L’extension est par défaut xls :

Sur l’onglet Contenu, rien n’est à modifier (mention uniquement du nom par défaut de la feuille dans le classeur) et enfin sur l’onglet Champs, on trouve l’habituel dispositif de mappage (en l’absence de mappage l’ensemble des champs du flux est reporté dans le classeur).
4. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Transformation PDI n°13
1. Objectif de la transformation
Dans cette transformation, trois étapes sont à prévoir :
-
Création d’une table PAYS dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table PAYS est réalisé),
-
Lecture du classeur Microsoft Excel Pays.xls,
-
Écriture dans la table PAYS de la BDD MySQL TDF2003-2 (le contenu de la table PAYS est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_13 - Intégration feuille d’un classeur Excel dans table d’une BDD MySQL.
2. Étape de lecture d’un classeur Microsoft Excel
Position de l’étape dans la palette : Extraction - Extraction depuis fichier Excel.
Sur l’onglet Fichiers de l’étape on signale le nom du fichier et son chemin :

Sur l’onglet Feuilles, le nom de la feuille (Sheet1 par défaut) à partir de laquelle l’extraction est réalisée, est signalé. Sur l’onglet Contenu, il est précisé si la feuille de calcul comporte une ligne de titre ou pas (cette ligne de titre peut servir ensuite au mappage).
Enfin sur l’onglet Champs, le mappage est réalisé. La récupération des champs depuis la ligne d’en-tête de la feuille de calcul Excel est possible et donne donc :

3. Étapes et liens de la transformation...
Transformation PDI n°14
1. Objectif de la transformation
Dans cette transformation, trois étapes sont à prévoir :
-
Création d’une table ETAPE dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table ETAPE est réalisé),
-
Lecture du fichier XML Etape.xml,
-
Écriture dans la table ETAPE de la BDD MySQL TDF2003-2 (le contenu de la table ETAPE est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_14 - Lecture d’un fichier XML et intégration dans une table d’une BDD MySQL.
2. Fichier XML en lecture
Position de l’étape dans la palette : Alimentation - Alimentation fichier XML.
Dans un fichier Etape.xml, les données sont stockées dans une structure en arbre :
<BDD>
<ETAPE>
<NUM_ETAPE>0</NUM_ETAPE>
<VILLE_DEPART>Paris</VILLE_DEPART>
<VILLE_ARRIVEE>Paris</VILLE_ARRIVEE>
</ETAPE>
<ETAPE>
<NUM_ETAPE>1</NUM_ETAPE>
<VILLE_DEPART>Saint-Denis</VILLE_DEPART>
<VILLE_ARRIVEE>Meaux</VILLE_ARRIVEE>
</ETAPE>
...
<ETAPE>
<NUM_ETAPE>20</NUM_ETAPE>
<VILLE_DEPART>Ville d'Avray</VILLE_DEPART>
<VILLE_ARRIVEE>Paris</VILLE_ARRIVEE>
</ETAPE>
</BDD>
Dans la transformation exposée ci-après, seul le fichier XML (Etape.xml) est utilisé....
Transformation PDI n°15
1. Objectif de la transformation
Dans cette transformation, quatre étapes sont à prévoir :
-
Création d’une table COUREUR15 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table COUREUR15 est réalisé et par rapport à la structure habituelle des tables COUREURn un champ NOM_PAYS_COUREUR de type Char(20) est ajouté),
-
Lecture depuis la table COUREUR de la BDD MySQL TDF2003-1,
-
Recherche du libellé en clair du pays dans la table PAYS de la BDD MySQL TDF2003-1,
-
Écriture dans la table COUREUR15 de la BDD MySQL TDF2003-2 (le contenu de la table COUREUR15 est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_15 - Recherche de données manquantes dans une table MySQL.
2. Recherche
Position de l’étape dans la palette : Recherche - Recherche dans Base de données.
Dans ce type d’étape, il faut renseigner a minima :
-
Nom étape : à définir
-
Table de recherche : PAYS dans notre cas
-
La ou les clé(s) de recherche : le champ CODE_PAYS (de la table MySQL PAYS) doit être égal au champ CODE_PAYS_COUREUR (de la table MySQL COUREUR)
-
Valeurs à retourner depuis la table : il s’agit dans notre cas du champ NOM_PAYS (de la table MySQL PAYS) et ce champ est renommé CODE_PAYS_COUREUR (utile...
Transformation PDI n°16
1. Objectif de la transformation
Cette transformation va comprendre trois étapes :
-
Création d’une table COUREUR16 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table COUREUR16 est réalisé et par rapport à la structure habituelle des tables COUREURn un champ NOM_PAYS_COUREUR de type Char(20) est ajouté),
-
Jointure entre les tables MySQL COUREUR et PAYS de la BDD MySQL TDF2003-1 (jointure entre COUREUR.CODE_PAYS_COUREUR et PAYS.CODE_PAYS afin de récupérer le champ PAYS.NOM_PAYS pour renseigner le champ NOM_PAYS_COUREUR pour l’écriture qui suit),
-
Écriture dans la table COUREUR16 de la base de données MySQL TDF2003-2 (le contenu de la table COUREUR16 est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_16 - Jointure entre tables MySQL.
2. Jointure
La jointure entre les tables MySQL COUREUR et PAYS s’effectue au niveau de l’étape de lecture au travers de la requête SQL suivante :
SELECT
coureur.DOSSARD_COUREUR,
coureur.IDENTITE_COUREUR,
coureur.CODE_PAYS_COUREUR,
pays.NOM_PAYS,
coureur.CODE_EQUIPE_COUREUR
FROM coureur, pays
WHERE coureur.CODE_PAYS_COUREUR=pays.CODE_PAYS
3. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Transformation PDI n°17
1. Objectif de la transformation
Dans une transformation, il peut se révéler intéressant de connaître la liste des sous-répertoires se trouvant à un niveau précis de l’arborescence du système de fichiers. On pourra parcourir les sous-répertoires repérés pour lire l’ensemble des fichiers texte s’y trouvant stockés.
La transformation comprendra deux étapes :
-
Listage des noms des sous-répertoires d’un répertoire,
-
Report des noms des sous-répertoires dans un fichier texte.
Nom de la transformation : PDI_17 - Listage des noms des sous-répertoires d’un répertoire.
2. Listage des noms des sous-répertoires
Position de l’étape dans la palette : Extraction - Récupération sous-répertoires.
Au niveau de cette étape, il suffit de préciser le répertoire à explorer :

3. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Transformation PDI n°18
1. Objectif de la transformation
Le but est de parcourir un répertoire pour y lire ensuite par exemple l’ensemble des fichiers texte s’y trouvant stockés.
La transformation va comporter les étapes suivantes :
-
Listage des noms des fichiers d’un répertoire,
-
Report des noms des fichiers dans un fichier texte.
Nom de la transformation : PDI_18 - Listage des noms de fichiers d’un répertoire.
2. Listage des noms des fichiers d’un répertoire
Position de l’étape dans la palette : Extraction - Récupération Nom fichiers.
Au niveau de cette étape, il faut préciser le répertoire à explorer. Pour filtrer uniquement les fichiers d’extension txt, il faut indiquer le joker .*txt (surprenant !) dans le champ Caractères joker.

3. Étapes et liens de la transformation
La transformation se présente comme suit dans PDI :

Le fichier texte en sortie de traitement pourrait par exemple contenir les informations suivantes :
filename
C:\Test_répertoires_PDI\Fichier1.txt
C:\Test_répertoires_PDI\Fichier2.txt
C:\Test_répertoires_PDI\Fichier3.txt
Tâche PDI n°19
1. Objectif de la tâche
Il est fréquent que l’on ait à publier sur un site Web (sur un compte FTP) des fichiers de données (souvent en format texte).
Des étapes de Pentaho Data Integration permettent de publier (disque local -> compte FTP) ou de rapatrier (compte FTP -> disque local) des fichiers.
Par contre ces étapes ne sont pas intégrables dans une transformation PDI. Il faudra passer par une tâche PDI. La construction d’une tâche est assez similaire à celle d’une transformation. Il y a quelques différences tout de même :
-
l’extension du fichier de sauvegarde sera kjb (au lieu de ktr pour les transformations),
-
il existe une palette spécifique pour les étapes des tâches (étapes regroupées dans divers dossiers également) :
-
Général
-
Manipulation de Courriels
-
Gestion de fichiers
-
...
-
Transfert de fichiers (FTP)
-
...
-
Il s’agit ici d’assurer la récupération, depuis un compte FTP (compte installé chez l’hébergeur Free), d’un fichier texte Fichier3.txt pour l’entreposer localement.
Nom de la tâche : PDI_19 - Récupération fichier texte depuis compte FTP.
2. Récupération depuis un serveur FTP (download)
Position de l’étape dans la palette : Transfert de fichiers (FTP) - Récupération...
Tâche PDI n°20
1. Objectif de la tâche
La tâche présentée ci-après a pour but de réaliser le transfert d’un fichier texte local Fichier1.txt vers un compte FTP (compte installé chez l’hébergeur Free).
Nom de la transformation : PDI_20 - Transfert fichier texte sur compte FTP.
2. Transfert vers un serveur FTP (upload)
Position de l’étape dans la palette : Transfert de fichiers (FTP) - Envoi de fichiers via FTP.
Sur l’onglet Général de cette étape, on trouve les paramètres de connexion au compte FTP vus dans la tâche précédente.

Sur l’onglet Fichiers de cette étape figurent les paramètres suivants :
-
le répertoire local contenant les fichiers à transférer,
-
le filtre des fichiers concernés par le transfert (jokers utilisables),
-
le répertoire distant dans lequel les fichiers seront transférés.
3. Étapes et liens de la tâche
La tâche se présente comme suit dans PDI :

Transformation PDI n°21
1. Objectif de la transformation
Il est fréquent que l’on rencontre des enregistrements (totalement identiques) en multiples exemplaires dans un flux de données. Il existe une étape spécifique pour supprimer ces enregistrements intempestifs du flux (on parle de dédoublonnage).
La transformation présentée ci-après a au contraire pour objectif de créer des doublons. Elle doit comporter les étapes suivantes :
-
Création d’une table COUREUR21 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table COUREUR21 est réalisé),
-
Lecture depuis la table COUREUR de la BDD MySQL TDF2003-1,
-
Clonage des enregistrements la table COUREUR de la BDD MySQL TDF2003-1 (enregistrements lus deux fois),
-
Écriture dans la table COUREUR21 de la BDD MySQL TDF2003-2 (le contenu de la table COUREUR21 est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_21 - Clonage d’enregistrements d’une table d’une BDD MySQL.
2. Clonage
Position de l’étape dans la palette : Divers - Clonage ligne.
Cette étape se contente de réaliser des doublons (clones) pour chacun des enregistrements présents dans le flux. Un nombre de clones à 2 par exemple signifie que l’on souhaite dans le flux en sortie l’enregistrement original...
Transformation PDI n°22
1. Objectif de la transformation
La transformation présentée ci-après a pour objectif de supprimer les doublons dans un flux. Les étapes seront :
-
Création d’une table COUREUR22 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table COUREUR22 est réalisé),
-
Lecture de la table COUREUR21 de la BDD MySQL TDF2003-2,
-
Tri des enregistrements sur le champ DOSSARD_COUREUR,
-
Dédoublonnage de la table COUREUR21 de la BDD MySQL TDF2003-2 (si les valeurs de champs sont toutes identiques),
-
Écriture dans la table COUREUR22 de la BDD MySQL TDF2003-2 (le contenu de la table COUREUR22 est supprimé à chaque exécution de la transformation).
Nom de la transformation : PDI_22 - Dédoublonnage sur une table d’une BDD MySQL.
2. Dédoublonnage
Position de l’étape dans la palette : Transformation - Dédoublonnage.
Il n’est pas toujours obligatoire de signaler les champs de comparaison dans le paramétrage de cette étape.
Dans notre cas, on cherche à éliminer de véritables doublons (des enregistrements clonés lors de la transformation précédente) avec des valeurs identiques pour tous les champs. La grille est donc laissée vide.
Il faut noter aussi que cette étape doit être impérativement précédée d’un...
Transformation PDI n°23
1. Objectif de la transformation
La transformation présentée ci-après va montrer comment générer des champs calculés sous PDI.
Les étapes de la transformation seront :
-
Création d’une table EQUIPE_BUDGET23 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence de la table EQUIPE_BUDGET23 est réalisé),
-
Lecture depuis la table EQUIPE_BUDGET de la BDD MySQL TDF2003-1
-
Calcul du champ EQUIPE_BUDGET_INDIVIDUEL,
-
Écriture dans la table EQUIPE_BUDGET23 de la BDD MySQL TDF2003-2.
Nom de la transformation : PDI_23 - Champ calculé sur table d’une BDD MySQL.
2. Script SQL de création de la table EQUIPE_BUDGET23
Le code SQL à prévoir est :
CREATE TABLE IF NOT EXISTS `equipe_budget23` (
`CODE_EQUIPE` char(3) NOT NULL DEFAULT '',
`NOM_EQUIPE` char(20) DEFAULT NULL,
`BUDGET_EQUIPE` double NOT NULL,
`NB_COUREURS_EQUIPE` int(11) NOT NULL,
`BUDGET_COUREUR_EQUIPE` double,
PRIMARY KEY (`CODE_EQUIPE`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3. Champ calculé
Position de l’étape dans la palette : Transformation - Calcul.
Le paramétrage de cette étape requiert le renseignement des colonnes suivantes :
-
Nouveau champ : valeur calculée, BUDGET_COUREUR_EQUIPE dans notre cas
-
Champ A : 1er opérande, ici BUDGET_EQUIPE (champ de la table MySQL...
Transformation PDI n°24
1. Objectif de la transformation
La transformation présentée ci-après montre une alternative pour le filtrage de lignes.
Les étapes de la transformation seront :
-
Création de deux tables MySQL COUREUR24-1 et COUREUR24-2 dans la BDD MySQL TDF2003-2 par script SQL (un test de préexistence des tables COUREUR24-1 et COUREUR24-2 est réalisé)
-
Lecture depuis la table COUREUR de la BDD MySQL TDF2003-1
-
Report des coureurs français dans la table MySQL COUREUR24-1 (le contenu de la table COUREUR24-1 est supprimé à chaque exécution de la transformation)
-
Report des coureurs belges dans la table MySQL COUREUR24-2 (le contenu de la table COUREUR24-2 est supprimé à chaque exécution de la transformation)
Avec Filtrages lignes (cf. "Transformation PDI n°4"), il aurait été facile de répartir les coureurs comme suit :
-
coureurs français dans la table COUREUR24-1 (avec la condition ="FRA")
-
coureurs non français dans la table COUREUR24-2 (avec la condition <>"FRA")
Ici la problématique est un peu différente. On veut pouvoir à la limite ventiler les coureurs en plus de deux sous-ensembles, l’étape Branchement conditionnel va être utilisée.
Nom de la transformation : PDI_24 - Eclatement d’une table d’une BDD MySQL en deux...