Académique Documents
Professionnel Documents
Culture Documents
JUGO4715
Introduction
Choses promises choses dues. Voici donc un tutoriel entirement ddi DataStage PX et en Franais sil vous plait ! Ce tutoriel est construit dans la perspective o vous connaissez dj DataStage server si ce nest pas le cas je vous suggre de commencer par le tutoriel DataStage Serve r.
lapprhension de nouvelles notions vitales comme le paralllisme, le partitionnement , la prise en compte prpondrante des ressources machine (nombre de serveur, processeur, RAM, I/O, etc.) La dcouverte dun autre moteur crit en C/C++ (si vous faites vous mme linstallation vous dcrouvrirez alors quil vous faut un compilateur C/C++) La dcouverte dune palette de nombreux stages supplmentaires, labandon dautres stages (server) et puis surtout la diffrence de comportement de certains stages entre Server et PX : je veux bien sur parler du Transformer ! et donc par corollaire, une faon de dvelopper diffrente, vous verrez le nombre de stages dans le canevas va augmenter considrablement par rapport DataStage Server
G-FRIDO
JUGO4715
Bref, si vous tes un dveloppeur DataStage Server ? et bien vous allez devoir apprendre dvelopper avec un autre ETL : DataStage PX et vous allez vite vous rendre compte que cest bien diffrent ! Nanmoins et malgr ces diffrences il est possible dutiliser des objets communs aux deux : par exemple on pourra utiliser des job sequence pour lancer des jobs server et/ou parallel. Maintenant le lien entre les deux serveurs sarrte ici, ne comptez pas par exemple rutilis er des fichiers Hash dans vos jobs Parallel/PX ou vos Datasets dans vos jobs server car malheureusement au sein des jobs Server ou PX la frontire est tanche !
Le paralllisme La palette des jobs Parallel Ae pas de debug ! comment faire ? Un pre mie r job facile Un second job plus complexe
G-FRIDO
JUGO4715
Comment vais-je dcomposer mes donnes ? Ma dcomposition conviendra-t-elle pour tout mon flux ? si non comment vais-je dpartitionner et repartitionner ? Aurais-je besoin de toutes mes donnes dans un sous-traitement de mon flux ? etc.
Bref, Dire que DataStage va grer automatiquement vos partitionnements serait une erreur de dbutant certes vous constaterez quil existe un mode de partitionnement Auto : mais cela ne signifie pas quil faut faire confiance ce qui va se passer derrire ou attention aux surprises. Le partitionnement nest pas un lment quil faut prendre la lgre cela se pense lors de la conception du flux sans quoi vous po urriez avoir de grosses surprises en terme de performances ou pire en terme dexactitude de vos traitements. Une erreur de dbutant consiste en effet dvelopper avec un seul nud
G-FRIDO
JUGO4715
Dans le schma ci-dessus on voit bien comment entre chaque sous-traitement DataStage PX va casser le partitionnement effectu et repartitionner avec la nouvelle cl de partitionnement les donnes. Attention nanmoins ne pas abuser de cette fonctionnalit et ainsi de grouper logiquement vos sous-traitement pour viter les oprations de tris sousjacente et donc coteuses en performance.
G-FRIDO
JUGO4715
Ce fichier dcrit la configuration utilise sur le serveur pour le traitement des processus gnrs par les jobs. Exemple:
{ node node1 { fastname rdtsuat pools resource disk /DataStage/data/PXTEMPDATA1/DNT2/DS {pools } resource scratchdisk /DataStage/data/PXTEMPDATA2/DNT2/SCRATCH {pools } } } node node2{ fastname rdtsuat pools resource disk /DataStage/data/PXTEMPDATA2/DNT2/DS {pools } resource scratchdisk /DataStage/data/PXTEMPDATA1/DNT2/SCRATCH {pools } } }
Dans cet exemple, les processus seront parallliss sur 2 nuds (node1 , et node2). Chaque nud dispose dun rpertoire disque pour le stockage :
Ces paramtres sont trs importants, surtout en phase de tuning ! Le nom de chaque machine est spcifi aprs la mention : fastname Il est aussi possible dutiliser des pools (noeud/resource). Un pool se dfinit par un groupe de nud (ou de ressource), cette notion pouvant tre rutilise lors du design des jobs DataStage (il est alors possible que lexcution de tel traitement se fera au travers dun pool particulier par exemple) : cela permet par exemple le cloisonnement de certains traitements particuliers.
G-FRIDO
JUGO4715
Quelques Trucs
Tout dabord on peut se poser la question du nombre de nuds spcifier dans le fichier APT_CONFIG_FILE . Ce nombre dpend de pas mal de paramtres dont certains ne peuvent tres dfinis comme une rgles gnrique (par exemple selon le type de traitement effectu dans le job lui mme, lutilisation des ressources, etc.). On peut nanmoins partir avec 1 nud par demi-CPU disponible. Ce nombre sera ensuite ajust selon les besoins. Si possible, vitez dutilisez les disques dans lesquels vous stockez les sour ces de donnes ! Nutilisez pas (ou du moins vitez) des ressources NFS pour les ressources scratchdisk. Attention si vous utilisez une SAN :
Vous devez alors absolument comprendre la configuration de la baie (pour viter tout conflit matriel) Si possible placez le scratchdisk sur un disque local (ou plusieurs) Ne faites pas confiance aux utilitaires de monitoring
Pour Ce Tutoriel Gardez le fichier APT_CONFIG_FILE par dfaut bref ne touchez rien
G-FRIDO
JUGO4715
Aggregator : ce stage permet (comme son nom lindique) deffectuer des oprations de regroupement et agrgats (somme, max, min, moyenne, etc.) sur un jeu de donnes. Change Capture & Change Apply : stages utiliss pour effectuer de la dtection de changement sur un jeu de donnes Copy : Stage trs utile qui permet de dupliquer en n flux un flux entrant (avec possibilit dy enlever des colonnes) Filter : Stage effectuant un filtre sur un flux Funnel : Stage permettant de fusionner des plux de mme structure (comme le ferait un UNION) Join & Merge : Jointures entre des flux Lookup : opration de Lookup Remove Duplicates : retire les doublons dun flux Transforme r : permet deffectuer des transformations sur un flux de donnes (jointures interdites) Modify : Permet la manipulation des mtadonnes du flux entrant Sort : tri Etc.
G-FRIDO
JUGO4715
Column Export : permet de fusionner des colonnes Column Import : permet dclater une colonne en plusieurs Etc.
Column Generator: permet dajouter des colonnes dans un flux Row Generator: permet de gnrer un jeu de ligne Peek : pose une trace dans un flux qui pourra tre visualise dans le Director Etc.
Complex Flat File : permet de manipuler des fichiers structure complexe (comme des CopyBook COBOL par exemple) DataSet: Fichier intrinsque DataStage PX (sorte dquivalent du fichier Hash dans Server). Ce fichier conserve le partitionnement ! Sequential File : Connecteur Fichier plat Etc.
G-FRIDO
JUGO4715
Utilisation du Peek
Le Peek cest un peu le mouchard de DataStage PX, grce lui vous saurez postriori quel tait ltat des donnes un endroit prcis de votre job. Cel a un inconvnient majeur : pour debugger votre job vous allez devoir modifier le design (afin dy ajouter le Peek). Cest ici que le stage Copy prend son importance dans la conception du job car grce ce dernier vous pourrez dupliquer des flux (vers des Peek) sans influer sur la logique gnrale de votre job. Voici un exemple concret :
Ce job ne fonctionne pas comme je le voudrais, afin de mieux comprendre jaurais besoin de connaitre ltat de mon flux entre l estage Modify_3 et le stage Remove_Duplicates_4 Comment faire ? En bien commencons par ajouter 2 stages dans le flux :
G-FRIDO
JUGO4715
NB: Dans le copy Stage effectuons un mapping complet sur les deux sorties (Peek_11 et Remove_Duplicates_4) Voil, une fois lanc le job tracera les donnes du flux dans le Peek, rsultat quil sera possible de consulter dans le Director. Attention de ne pas charger trop de donnes sans quoi les traces seraient trop importantes, travaillez sur des chantillons reprsentatifs. Une fois mon flux valid, il faudra retirer le Peek Le Copy Stage tant un stage qui ne consomme quasiment rien il nest pas ncessaire de le supprimer part pour des raisons de lisibilits bien sur. On aura donc le job final suivant :
10
G-FRIDO
JUGO4715
La mthodologie
Pour faire simple, soyons clair les outils de debug sont limits (IBM promet de founir un debugger dans ses prochaines versions jai espr pour le 8.5 mais non, on verra plus tard) en attendant soyez mthodique dans votre faon de dvelopper vos jobs et par exemple vitez de placer toute votre logique cad tous les stages dans le canevas pour ensuite tester votre job. A la place je vous recommanderai de construire et tester votre job de manire progressive et itrative : un premier morceau on le teste, on le corrige, on y rajouter le second morceau, etc.
Les mtadonnes
Tout dabord rcuprez le fichier de donnes (cest le mme que celui du tutoriel DataStage Server pour ceux qui lont dj) :
ID|NOM|PRENOM|SALAIRE|SERVICE 1|KALA|BENOIT|90400|MARK 2|LEBRANCHU|PAUL|75900|FIN 3|TORGIL|JEAN|45000|FIN 4|TUDOR|JEAN-PHILIPPE|67000|MARK 5|GEORGE|MIKAEL|89000|FIN 6|GUIDON|JEROME|30900|ACHAT 7|DECONIC|PHILIPPE|48900|FIN
Ensuite il faut importer les mtadonnes de ce fichier. Cette opration est la mme ce celle effectue dans le tutoriel DataStageServer. Dans le repository, faites un clic droit, puis slectionnez Import Table Definition , puis Sequential File Definition . Un assistant apparait alors pour importer vos mtadonnes bases sur le fichier que vous allez slectionner :
11
G-FRIDO
JUGO4715
Dans cet assistant slectionnez tout dabord le rpertoire dans lequel se trouve votre fichier, puis le fichier lui mme. Une nouvelle fentre apparait alors (cf. ci-dessous) dtaillant la structure du fichier telle que vu par lassistant. Cochez la case First line is column names puis changer la valeur de Other Delimiter avec le pipe : |
Design du job
Nous allons maintenant placer dans le canevas (la zone de dveloppement droite en bleu par dfaut) les stages constituant notre logique de flux dintgration soit :
Un Sequential File (palette File) Un Transformer (palette Trasnformation) Un DataSet (Palette File) :
G-FRIDO
JUGO4715
Jusque l, certains (les dveloppeurs DataStage Server tout particulirement) vont me dire qu peu de choses prs PX et server cest l mme chose et bien continuons avec le paramtrage, vous allez voir que les diffrences vont commencer.
Dans longlet Format, nous allons prciser comment est structur notre fichier. A savoir notre dlimiteur de colonne (pipe), de fin de fichier, de ligne, etc. Changeons ici aussi la proprit Quote none pour prciser que nos colonnes ne sont pas encadres par un dlimiteur.
13
G-FRIDO
JUGO4715
Importons maintenant nos mtadonnes fraichement importes (grce au bouton Load) dans longlet Columns :
Voil, cest termin pour le connecteur fichier plat, vous pouvez toujours vrifier votre paramtrage en utilisant le bouton View Data.
Paramtrage du Transformer
Le paramtrage du transformer est trs simple, double-cliquez sur le stage Transformer_1 :
Voici les actions raliser pour obtenir lcran (le mapping) ci dessus: 1. Supprimez la drivation DSLink3.PRENOM 2. Double-cliquez sur la drivation DSLink3.NOM pour entrer en mode modification et tapez DSLink3.NOM : : DSLink3.PRENOM 3. Validez Notez ici que vous ne pourrez pas utiliser les routines server dans le transformer PX, la place et si le besoin sen fait sentir vous devrez dvelopper une routine parallel(PX) en C/C++ mais cest une autre histoire.
14
G-FRIDO
JUGO4715
Paramtrage du DataSet
Il ny ici presque rien faire sinon prciser o se trouve le dataset, pour cela double -cliquez sur le stage Dataset_3 et changez la valeur File comme ceci :
Lancement du job
Voil notre premier job est termin, compilez le et lancez le grce aux deux boutons suivants :
G-FRIDO
JUGO4715
2. Dans un dataset : le cumul par service des salaires. Attention il faut exlure le service achat de cette liste !
Design du job
Ajouter tout dabord un nouveau Job Parallel (comme nous lavons fait prcdemment). Dans le canevas disposez les stages suivant comme ceci :
Note :
Le stage Filter est prsent dans la palette Transformation Le stage Aggregator est prsent dans la palette Transformation Le stage Copy est prsent dans la palette Transformation
Le rle du Copy Stage est prpondrant ici car il sert dupliquer le flux initial (provenant du sequential File) en deux, pour deux traitements diffrents : le reformattage dans un nouveau fichier plat et laggrgat. La partie suprieure (transformer & Sequential File) a donc pour rle de concatner les colonnes et de les reformatter. La granularit reste ici celle de lemploye. La partie infrieure elle a un tout autre rle :
Tout dabord un filtrage du service ACHAT qui ne nous interresse pas (rle du stage Filter) Ensuite un regroupement par service et somme des salaires via le stage Aggregator Lcriture dans un DataSet
16
G-FRIDO
JUGO4715
Noubliez pas, pour les mapping, quils se trouvent dans les transformer ou ailleurs, il suffit de faire des glisser-dplacer pour effectuer le lien
Paramtrage du Transformer
En ce qui concerne le transformer, cest ici que nous allons reformatter le flux afin davoir un joli listing dans le fichier plat ultrieur. Il faut donc passer de 3 colonnes en une seule ! pour cel rien de plus simple. Crez une nouvelle colonne dans le lien de sortie (Insert New Column) de type Varchar(255) et tapez la formule suivante :
Validez.
G-FRIDO
JUGO4715
Paramtrage du Filter
Passons maintenant la partie infrie ure de notre job. Il faut tout dabord retirer les employs du service ACHAT, cest l le rle du stage Filter. Double -cliquez dessus :
Paramtrage de laggregator
Son rle est tout dabord deffectuer un regroupement par SERVICE puis une somme des SALAIRE par SERVICE. Double-cliquez sur le stage Aggregator. Pour commencer il faut saisir (manuellement) les mtadonnes de sortie (Output), onglet Columns :
18
G-FRIDO
JUGO4715
Rsum :
Pour la proprit Group, saisissez SERVICE Saisissez la colonne (en entre/input) dagrgat : SALAIRE, et la colonne calcule (output) SALAIREAGG dans la sous-proprit Sum Output Column.
Noubliez pas de prciser pour le stage DataSet le nom de fichier. Voil les stages sont maintenant paramtrs, il nous reste compiler et lancer notre job :
19
G-FRIDO
JUGO4715
Le fichier (Sequential_File_26) doit avoir t cr sur le serveur : KALA BENOIT (90400 Euros) TORGIL JEAN (45000 Euros) GEORGE MIKAEL (89000 Euros) DECONIC PHILIPPE (48900 Euros) LEBRANCHU PAUL (75900 Euros) TUDOR JEAN-PHILIPPE (67000 Euros) GUIDON JEROME (30900 Euros) Voil jespre que ce tutoriel vus aura aid apprhender DataStage PX, je nai pas abord les notions de partitionnement volontairement afin de ne pas compliquer cette entre en la matire a sera loccasion dun autre tutoriel : Vous trouvez le fichier de ce tuto
20