IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

lecture d'une table avec boucle + variable à alimenter et à réinitialiser


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 50
    Points : 43
    Points
    43
    Par défaut lecture d'une table avec boucle + variable à alimenter et à réinitialiser
    J'ai un trt qui me parait tout à fait classique mais que je n'ai jamais fait avec Talend, ça doit bien être possible.

    Je balaye une table transaction mais je dois gérer un changement de transaction (plusieurs enreg par transaction) et manipuler une variable

    En gros ça ressemble à ca

    Balayage table transactions

    Variable_Montant = 0

    Tant qu'il s'agit de la même transaction (donc il faut que je teste si numéro de transaction lu est différent du précédent)

    Variable_Montant = Total ( donnée du mapping en entrée) + Variable_Montant
    ...

    Ecrire 1 ligne en sortie
    Fin tant que
    Variable_Montant = 0

    Fin balayage de la table

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    Bonjour,

    En fait tu veux agréger ton montant par transaction ?

    Donc le composant tAggregateRow est la réponse

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 50
    Points : 43
    Points
    43
    Par défaut
    Non j'ai du mal m'expliquer.
    Je ne veux pas agréger, j 'ai n lignes par transaction en entrée et n lignes pareillement en sortie.

    Par contre je dois alimenter une zone en sortie à partir d'une variable que je remets à 0 à chaque rupture de transaction.

    Pour faire simple quand j'arrive à la dernière ligne de transaction , je dois alimenter une zone avec 'champ1 - Total des montants des lignes précédentes' donc je sais pas trop comment alimenter le montant des lignes précédentes dans une variable et je ne sais pas trop non plus comment gérer le changement de transaction et remettre la variable à 0

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    Ok, c'est plus clair :

    la difficulté est de détecter la dernière ligne de ta rupture, par défaut avec Talend, c'est très difficile voir impossible.

    Donc voici ce que je propose :
    tu télécharges mon composant sur la forge :
    http://www.talendforge.org/exchange/...view&nav=1,1,1
    Il permet de déterminer les clefs de rupture - il se paramètre comme un tSort, il y a juste une colonne en plus pour la clef de rupture.

    Pour le calcul tu peux utiliser un tMap ou un tJavaRow.
    Dans le tMap tu crées une variable de type object avec ce code :

    (Integer)globalMap.get(TransactionID) == null ? globalMap.put(TransactionID, tonMontant ) : globalMap.put( TransactionID, (Integer)globalMap.get(TransactionID) + tonMontant )

    TransactionID est une String a partir de ta clef de transaction.
    Quand tu détecte la rupture, tu récupères la valeur (Integer)globalMap.get(TransactionID)

    remarques :
    Tu changes Integer en BigDecimal si cela est néccessaire.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 50
    Points : 43
    Points
    43
    Par défaut ok merci bcp je vais regarder tout cela de près
    la difficulté est de détecter la dernière ligne de ta rupture, par défaut avec Talend, c'est très difficile voir impossible.

    --> c'est fou cela , ça fait un bout de temps que je n'ai pas programmé mais c'est un truc basique pourtant

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    --> c'est fou cela , ça fait un bout de temps que je n'ai pas programmé mais c'est un truc basique pourtant
    C'est pour cela que j'ai créé le composant. Avec le tBreakRow cela fonctionne tout seul

Discussions similaires

  1. [Débutant] Lecture d'une table avec un GridView
    Par Afaf001 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/08/2013, 22h27
  2. [Débutant] Lecture d'une table avec un GridView
    Par Afaf001 dans le forum VB.NET
    Réponses: 0
    Dernier message: 12/08/2013, 12h45
  3. [MySQL] Lecture d'une table avec requête ordonnée et groupée
    Par kabkab dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 24/06/2008, 14h38
  4. réorganiser une table avec des variables dynamiques
    Par Stefan_H dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2007, 12h40
  5. DTS venant d'une table avec colonnes variables
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/08/2007, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo