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

Talend Discussion :

Max value sur valeurs historisées


Sujet :

Talend

  1. #1
    Candidat au Club
    Max value sur valeurs historisées
    Bonjour à tous,

    ça fait un moment que je tourne autour de ce problème et malgré de nombreuses tentatives je n'arrive pas à trouver de solution complètement fonctionnelle.
    Alors c'est difficile à expliquer donc je vais faire ça avec des exemples.

    Ici l'output qui n'est pas bon, en bleue la zone intéressante :



    Mon but est d'avoir dans la colonne "2ND" la valeur maximale déjà passée dans la colonne "FIRS".

    Ci-dessous le résultat attendu :





    J'ai pu me rapprocher d'une solution en utilisant via un tMap, les fonctions _this et _last avec les variable, seulement je dois faire un regroupement sur les colonnes "NAME" et "NAME2" et le compteur avec _this/_last ne se remet pas à 0 quand j'arrive sur un nouveau regroupement.

    Ci-dessous un screen du job, je peux pas pas tout montrer et j'ai du anonymiser les données, désolé ça complexifie la compréhension ...





    Voilà, alors si vous avez une idée je suis preneur

    Merci et bonne journée.

  2. #2
    Membre expérimenté
    Tehniquement
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Si c'est la première ligne
    Alors
       2ND(Ligne courante) = FIRS(Ligne courante)
    SINON
       2ND(Ligne courante) = Max(2ND(Ligne precedente), FIRS(Ligne courante))


    deux option tu utilises un tSavedLastRow ou un tJavaFlex

    Pour un tJavaFlex plus simple
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // code de début
    Integer max = null;
     
    //code principal
    /* Il faut modifier input_row et output_row*/
    if(max == null) {
    max = input_row.FIRS;
    } else {
    max = Math.max( input_row.FIRS, max);
    }
    //faudra renommer aussi 2ND non valide en java
    output_row.2ND = max;
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

###raw>template_hook.ano_emploi###