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 :

[3.2][tmap] calcul dans un tmap (somme,cumul))


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut [3.2][tmap] calcul dans un tmap (somme,cumul))
    Bonjour,

    dans le but d'automatiser des calculs faits via excel, je souhaite dans un tmap:

    1) utiliser la somme totale d'une colonne (row.qte)

    2) effectuer une série qui est une somme cumulée :
    H= H[-1] + constante
    où H[-1] est la valeur précédente

    Comment faire ça dans le tmap ?
    (car je sais que j'aurais pu faire une aggreg via un taggregate mais bon, je le veux ds le tmap, notamment pr la somme cumulée)

    et surtout , où pourrais je trouver des informations pr apprendre à coder ce genre de problématique ?

    Merci bcp !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Salut,

    Voila une solution. Il faut rajouter un tJavaFlex en sortie de ton tMap.
    Voila ce que j'ai mis dans mes composants :
    - tFileInputDelim : un champ qte de type Integer

    - tMap : en sortie :
    qte de type Integer et dont l'expression est row1.qte
    H de type Integer et expression de H : Relational.ISNULL(globalMap.get("dernier"))?0Integer)globalMap.get("dernier") + context.ajout;

    context.ajout est une variable de contexte de type Integer representant ta valeur fixe à ajouter à H - 1.

    -dans mon tJava :
    initial : Integer somme = 0;
    principal :
    somme += out1.qte;
    globalMap.put("dernier", out1.qte);

    final :
    System.out.println("Somme : " + somme);

    Et le tLogRow pour afficher le résultat en console.

    Je ne pense pas que tu puisses faire autrement car je ne vois pas comment récupérer la valeur de la colonne précédente de H en ne la passant dans la globalMap

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par tropik972 Voir le message
    2) effectuer une série qui est une somme cumulée :
    H= H[-1] + constante
    où H[-1] est la valeur précédente
    Bonjour,

    A priori si tu veux une suite du genre H = H[-1] + cste, tu peux la mettre sous la forme : H[n] = n * cste

    J'ai bon ?

    Nicolas

  4. #4
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Bouga74 Voir le message
    Salut,

    Voila une solution. Il faut rajouter un tJavaFlex en sortie de ton tMap.
    Voila ce que j'ai mis dans mes composants :
    - tFileInputDelim : un champ qte de type Integer

    - tMap : en sortie :
    qte de type Integer et dont l'expression est row1.qte
    H de type Integer et expression de H : Relational.ISNULL(globalMap.get("dernier"))?0Integer)globalMap.get("dernier") + context.ajout;

    context.ajout est une variable de contexte de type Integer representant ta valeur fixe à ajouter à H - 1.

    -dans mon tJava :
    initial : Integer somme = 0;
    principal :
    somme += out1.qte;
    globalMap.put("dernier", out1.qte);

    final :
    System.out.println("Somme : " + somme);

    Et le tLogRow pour afficher le résultat en console.

    Je ne pense pas que tu puisses faire autrement car je ne vois pas comment récupérer la valeur de la colonne précédente de H en ne la passant dans la globalMap
    Bonjour,
    merci de ta réponse ....
    j'avais plus pensé à développer une routine qui calculerait la somme d'une colonne jusqu'à une valeur fixée
    et on incrémenterait ainsi le rang de la colonne ...

    mais ton idée est pas mal du tout !

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par DevNico Voir le message
    Bonjour,

    A priori si tu veux une suite du genre H = H[-1] + cste, tu peux la mettre sous la forme : H[n] = n * cste

    J'ai bon ?

    Nicolas
    Bonjour,
    oui effectivement, tu as raison ... mais le H(-1) est un peu plus compliqué que ça...
    je reviens vers ta réponse au plus vite !
    ;-)

  6. #6
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    Bonjour, si j’ai bien compris ton problème la solution est simple. Il te suffit juste de créer une variable Qte_cumul de tel sorte à ce que Qte_cumul =Qte_cumul+row.QTE.

    Ci-joint quelque capture d’écran.



    Bon courage

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par atb Voir le message
    Bonjour, si j’ai bien compris ton problème la solution est simple. Il te suffit juste de créer une variable Qte_cumul de tel sorte à ce que Qte_cumul =Qte_cumul+row.QTE.

    Ci-joint quelque capture d’écran.

    Bon courage
    Bonjour,

    Voilà c'est exactement ça !
    en fait, j'avais mal présenté mon pb !
    ce que je voulais c'était
    I[n] = H[n]*cte + I[n-1]

    ce qui en soit, n'est pas si différent. Et grâce à vos solutions, j'ai réussi à réaliser un test pour une valeur fixe !

    Ce qui me ramène à ma 1ere question : comment calculer la somme totale d'une colonne ?? y a t'il une fonction du style colonne.sum ???
    Images attachées Images attachées  

  8. #8
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    A mon avis pour avoir la somme de ta colonne il faut le faire en dehors du tMap. Car à l'intérieur il itère ligne par ligne. Tu as un composant tAggregate. Tu peux récupérer un flux de sortie en double et le sommer ensuite (Après le tMap).

    Sinon théoriquement la somme total correspond à la valeur de la dernière ligne de Poids_achat.

    Maintenant il faut voir le besoin fonctionnel de la chose. Avoir la somme de coté pour le contrôle donc utilisation d'un tAggregate. Ou pour chaque Poids_achat mettre à coté la somme -> là faut voir je n'ai pas encore d'idée

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par atb Voir le message
    A mon avis pour avoir la somme de ta colonne il faut le faire en dehors du tMap. Car à l'intérieur il itère ligne par ligne. Tu as un composant tAggregate. Tu peux récupérer un flux de sortie en double et le sommer ensuite (Après le tMap).

    Sinon théoriquement la somme total correspond à la valeur de la dernière ligne de Poids_achat.

    Maintenant il faut voir le besoin fonctionnel de la chose. Avoir la somme de coté pour le contrôle donc utilisation d'un tAggregate. Ou pour chaque Poids_achat mettre à coté la somme -> là faut voir je n'ai pas encore d'idée
    en fait la constante serait la somme totale .... dc à utiliser pour chaque poids_achat !
    si je la calcule dans un tAggregate en Amont, comment puis-je récupéré les aggrégats ? ils sont stockés dans une variable ?

Discussions similaires

  1. java.lang.NullPointerException sur calcul dans TMap
    Par TheTcha dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 31/01/2013, 10h57
  2. Afficher une somme calculée dans l'entête
    Par nlyazidi dans le forum iReport
    Réponses: 8
    Dernier message: 05/08/2010, 12h38
  3. String vers date dans un tMap
    Par _GuiTs_ dans le forum Développement de jobs
    Réponses: 9
    Dernier message: 12/05/2009, 16h40
  4. Clés de format String dans un tMap
    Par ptitenana_vtq dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 14/11/2008, 13h40
  5. Somme sur un champ calculé dans un état
    Par Format dans le forum IHM
    Réponses: 5
    Dernier message: 28/11/2006, 14h21

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