Vous êtes sur la page 1sur 20

G-FRIDO

JUGO4715

Tutoriel DataStage PX/EE


Lien internet : http://www.exl-infosfr.com/tutoriels/tutoriel-datastage-pxee/

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.

Note pour les dveloppeurs DataStage Server


Dvelopper avec DataStage PX na rien voir avec le dveloppement sous DataStage Server et ce malgr les troublantes ressemblances des deux moteurs ! en fait jai envie de dire que mis part les environnements (clients lourds) de dveloppement et bien les similitudes sarrtent l. Ok le designer est le mme, la faon de dvelopper est la mme (approche TopDown, etc.), on retrouve le Director, lAdministrator la console dadministration mais voil a sarrte l ou presque ! Croire quun dveloppeur Server deviendra un bon dveloppeur PX suite une simple formation reste une hrsie car mme si les moteurs Server et PX sont bien cachs derrire les applications clientes identiques, ils nen restent pas moins fondamentalement diffrents. Aborder DataStage PX ncessite donc:

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 !

Table des matires


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

Le paralllisme avec DataStage PX


Outre le fonctionnement en mode pipelining (traitement dun flux dintgration de donnes au fil de leau) DataStage PX est extrmement performant grce sa gestion du partitionnement des donnes (au travers du framework Orchestrate). Pourquoi partitionner, et puis dabord quentendon par partitionnement ? Et bien lide du partitionnement est toute simple : dcomposer les donnes pour les traiter en parallle et en simultan par plusieurs units de traitements. Concrtement, si on prend lexemple dun dictionnaire et de 4 units de traitements (Cf. image gauche) lide va tre de crer 4 jeux de donnes partir du jeu complet et de dlguer quatre units de traitements qui pourront tre des serveurs distincts ou des processeurs les transformations. Ainsi les Quatre sous traitements pourront tre effectus en parallle, amliorant ainsi considrablement les performances et optimisant lutilisation des ressources machine. Une ide sduisante mais si la thorie parait simpliste : la ralit est tout autre. Car dcomposer les donnes cest bien mais cela nous amne nous poser dautres questions comme :

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

Partitionnement et repartitionnement la vole


Partitionner cest bien mais cela peut ne pas convenir pour tout notre flux dintgration. En effet imaginons que pour effectuer lintgration de donnes clients nous ayons besoin de faire des calculs bass sur le nom de famille en premier lieu, puis que des agrgats sur le code postal seront ncessaire, pour enfin calculer un encours de carte de crdit Les calculs raliss sont bass sur des regroupements logique de donnes, or si nous avons partitionn en amont cela signifie que nous avons regroup : faire un regroupement par code postal sur un jeu de donnes qui lui mme est rduit aux noms de famille na donc aucun sens et mon rsultat sera faux ! Voici donc une problmatique classique du partitionnement Heureusement DataStage y rpond automatiquement grce au repartitionnement la vole :

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.

Les fichiers de configuration


DataStage PX (ou EE) utilise un fichier de configuration afin de grer les traitements parallles et ainsi de rpartir sur diffrentes partitions logiques et physiques ses traite ments. Ce dernier est totalement indpendant des dveloppements et est utilis directement par le moteur afin de traiter les phases de partitionnement, collecte et repartitionnement sur plusieurs nuds. Ce fichier peut tre chang/utilis au niveau du projet DataStage global ou chang lors du traitement dun job en particulier via la variable denvironnement $APT_CONFIG_FILE .

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 :

des DataSets (resource disk) Et pour le swapping (resource scratchdisk).

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

La palette des jobs Parallel (PX)


Pour les dveloppeurs DataStage Server
Si vous tiez dveloppeur DataStage Server, vous constaterez assez vite la diffrence entre la palette des jobs server et celle des jobs Parallel (job PX). Partez donc directement du principe que les stages PX sont totalement diffrents de ceux de serveur a sera plus simple : croire par exemple que le transformer va tre la mme boite outil que dans server est une erreur, vous allez dailleurs vite vous en rendre vite compte. En fait avec DataStage PX chaque typologie de transformation possde son stage (ou ses stages) associ fini donc de tout mettre dans un gros transformer avec plein de code Basic pour traiter une logique de transformation ! Avec DataStage PX vous allez devoir dcomposer votre logique de flux via beaucoup plus de stages : Ca sera plus lisible du coup mais la contrepartie est que les jobs vont grossir et se complexifier ! on ne peut pas tout avoir La manire de dvelopper reste cependant la mme, on prend des stages que lon pose dans le canevas et la logique de flux suit les flches attention il y aura bien sur quelques subtilits ne pas ngliger comme les partitionnements/repartitionnements (vous verrez dailleurs ce propos de nouveaux logos sur les liens mme) mais la logique reste la m me ! dailleurs la similitude sarrte l !

G-FRIDO

JUGO4715

Pour les autres


La logique de dveloppement avec DataStage est dcrite dans le tutoriel DataStage Server. http://www.exl- infosfr.com/tutoriels/tutoriel-datastage-server/

Prsentation des stages Parallel (PX)


Cest partir de l que la diffrence avec DataStage Server se fait sentir en effet la palette de stages est trs diffrente voire compltement. Et comme je le disais juste avant mfiezvous des apparences car elles sont trompeuses. Je vais vous prsenter au travers de cette page les principaux stages parallel.

Les stages de transformation dits Processing


Ce sont les stages ddis aux transformations de donnes proprement dit :

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

Les stages de deboggage dits Debug


Ces stages servent dbogger et/ou manipuler des jeu de tests :

Column Export : permet de fusionner des colonnes Column Import : permet dclater une colonne en plusieurs Etc.

Les stages de fichier dits File


Ces stages servent manipuler les fichiers :

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.

Les stages de restructuration dits Restructure


Ces stages servent restructurer les flux de donnes :

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

Ae pas de debug ! Comment faire ?


Autant DataStage Server tait fournit avec un Debugger intgr Autant DataStage PX ne lest pas ! cest donc sans quil va falloir dvelopper ses jobs. Heureusement la palette de stages nous fournit quelques outils qui nous serons utiles dans notre tche.

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 :

Un Copy Stage Un Peek

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

Utilisation du Row Generator


Le row Generator est un stage trs utile car il permet de gnrer trs simplement des jeux de donnes simples (algorithme cycliques, hasard, etc.). Nhsitez donc pas utiliser ce stage et en abuser

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.

Un premier job facile


Nous y voil, notre premier job pour ce premier exercice je vous propose de dvelopper le m me job que dans le TutorielDataStage Server. Cela nous permettra de commencer voir les diffrences entre ces deux serveurs. Rappelons nous lide est de lire un fichier squentiel (plat) et dy mettre le contenu dans un fichier Hash ! Ae a nexiste pas dans PX/EE la place nous utiliserons un DataSet bien sur. Noublions pas non plus la petite transformation qui doit tre faite lors de ce transfert de donnes, savoir la concatnation du nom & prnom.

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) :

Les trois doivent tre lis de la sorte :


12

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.

Paramtrage du Sequential File


Double-cliquez sur le stage Sequential_File_0. Vous avez alors un certain nombre doptions et donglets bien plus important que dans DataStage Server. Commenons par le second : Properties, nous allons y prciser o se trouve notre fichier (proprit File=), changez aussi la proprit First Line is coluimn Name true :

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 :

Vous devrez alors obtenir le rsultat suivant :

Allez, maintenant passons un job un peu plus complexe

Un second job plus complexe


Nous venons de voir comment crer un premier job trs simple. Tout en ne tombant pas dans lextrme complexit nous allons maintenant rhausser la difficult dun cran. Voici lobjet de ce second job : partir du mme fichier notre job va devoir gnrer deux sorties : 1. Dans un fichier squentiel : un listing contenant Nom, prnom et salaire sous le for mat suivant : NOM PRENOM (SALAIRE Euros)
15

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

Paramtrage du Copy Stage


Une fois plac dans le canevas, il va falloir modifier deux choses dans le paramtrage du copy Stage :

Son mapping vers le flux suprieur :

16

G-FRIDO

JUGO4715

Son mapping vers le flux infrieur

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.

Paramtrage du Sequential File (ecriture)


Il faut maintenant prcisez comment et o nous allons ecrire notre fichier. Double-cliquez sur le stage Sequential_File_26, aprs avoir prcis le nom du fichier dans lequel il fallait ecrire, prcisez les options suivantes de format :
17

G-FRIDO

JUGO4715

A savoir : Pas de delimiteurs de colonnes & lignes.

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 :

Prcisez la clause de filtrage (Where Clause) : SERVICE <> ACHAT et validez.

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

Ensuite il faut prciser les regroupements et agrgats :

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.

Changez ensuite le mapping (onglet output) comme suit :

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

Vous aimerez peut-être aussi