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

Talend Discussion :

Mise en place d'une Mise a Jour incrémentale


Sujet :

Talend

  1. #1
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut Mise en place d'une Mise a Jour incrémentale
    Bonjour,

    Je suis entrain de mettre en place une mise a jour incrémentale.

    Mon problème est que je n'arrive pas a écrire le contenu d'une variable de context dans un fichier.

    Je récupère le dernier enregistrement, que je veux stocker dans un fichier (ce que je n'arrive pas a faire). et a chaque exécution du job je lis ce fichier.

    Nom : 2018-04-12 14_35_49-Talend Open Studio for Data Integration (6.5.1.20180116_1512) _ f_Test (Conn.png
Affichages : 473
Taille : 34,1 Ko
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut talend astuce
    Bonjour
    le composant tMemorizeRows va répondre parfaitement à votre problème.

  3. #3
    Membre averti

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 160
    Points : 443
    Points
    443
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par arezkus Voir le message
    Bonjour
    le composant tMemorizeRows va répondre parfaitement à votre problème.
    Exactement tMemorizeRows pourrait très bien le faire, par contre si pour une raison quelconque tu veux écrire dans un fichier quand même, ton job doit ressembler à ça :

    Nom : stock_in_file.PNG
Affichages : 469
Taille : 13,6 Ko
    Utilisez le bouton pour mettre en valeur la ou les réponses qui vous ont été les plus utiles. Marquez comme si c'est le cas.

    ''Le savoir est la seule matière qui s’accroît lorsqu’on la partage.''
    (Socrate)

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Bonsoir,

    Le tMemorizeRows garde la donnée en mémoire, hors moi je veux la garder dans un fichier afin de la réutiliser à la prochaine exécution du Job.



    @abdouone0184, ton schéma ne corresponds pas vraiment à ce que je veux faire.

    Je vais essayer de mieux expliquer.

    Je veux :
    1) au lancement du job il aille chercher le dernier Index (dans un fichier ou une variable) LastIndex.
    2) il fait une sélection (dans la BD source) en fonction de LastIndex
    3) fait des traitement et les met dans la BD de destination.
    4) a la fin de (3), il stock le nouveau dernier index, qu'il aura récupéré, dans un fichier ou une variable. Cet index sera utilisé a la prochaine exécution du Job en (1)
    J’espère avoir été plus clair cette fois.

    Merci
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  5. #5
    Membre averti

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 160
    Points : 443
    Points
    443
    Billets dans le blog
    2
    Par défaut
    Effectivement c'est un peu plus claire, donc on suppose que tu as déjà la requête qui te retourne ton lastIndex ?

    Quelque chose du genre : select index from ta_table where rowid in(select max(rowid) from ta_table);
    Utilisez le bouton pour mettre en valeur la ou les réponses qui vous ont été les plus utiles. Marquez comme si c'est le cas.

    ''Le savoir est la seule matière qui s’accroît lorsqu’on la partage.''
    (Socrate)

  6. #6
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par abdouone0184 Voir le message
    Effectivement c'est un peu plus claire, donc on suppose que tu as déjà la requête qui te retourne ton lastIndex ?

    Quelque chose du genre : select index from ta_table where rowid in(select max(rowid) from ta_table);

    Oui mon tMap a 2 output, une pour alimenter la table de fait et une autre garder les index, et donc le dernier index sera celui a sauvegarder. c'est a ce niveau que je suis coincé. comment sauvegarder cet index ?
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  7. #7
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Tu ajoutes un setGlobalVar pour sauvegarder dans la globalMap ton index.
    Tu ajoutes un tFixedFlowInput qui lie la globalMap pour récupérer le dernier index et qui a en sortie ton fichier dans le composant tFileOutputDelimited.
    Tu relies le tFixedFlowInput et le tOracleInput par une connection onComponentOk ou onSubjobOk.


    Pas obligatoire :
    Si tu veux faire plus propre et enlever les transactions.
    tu peux utiliser un tPreJob pour initialiser la valeur de l'increment (Attention si le fichier n'existe pas) et un tPostJob pour sauvegarder la valeur dans le fichier.
    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

  8. #8
    Membre averti

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 160
    Points : 443
    Points
    443
    Billets dans le blog
    2
    Par défaut
    Ahh Ok, je pense avoir compris ton problème , au faite tu dois récupérer ton lastIndex avant d'arriver dans ton tMap, car sinon au premier lancement de ton job ton lastIndex n'est pas initialisé.

    Dans ce cas je ne pense même pas que tu aies besoin d'écrire ton lastIndex dans un fichier, voici comment j'aurais implémenté ça :

    Nom : select_last_index_all.png
Affichages : 467
Taille : 14,9 Ko

    Dans le premier tOracleInput_1 :


    "SELECT MAX(key_id) FROM ta_table"

    Ou bien

    "SELECT COUNT(*) FROM ta_table" => comme ça si ta table est vide la requête te retourne 0.

    Dans ton tJavaRow_1 :

    context.lastIndex = input_row.lastIndex+1;

    Tu initialises ta variable de contexte lastIndex, ainsi tu pourras utiliser cette variable de contexte dans le reste de tes sous-job sans problème.

    A chaque fois que tu lancera ton job, il te récupérera d'abord ton lastIndex, avant de faire le reste de tes traitements.
    Utilisez le bouton pour mettre en valeur la ou les réponses qui vous ont été les plus utiles. Marquez comme si c'est le cas.

    ''Le savoir est la seule matière qui s’accroît lorsqu’on la partage.''
    (Socrate)

  9. #9
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    J'avais pensé à cette solution, mais comme je n'enregistre pas les index dans la table de destination, je l'ai mise de coté.

    Vu comment je galère pour faire autrement, je crois que je vais revenir a cette solution/configuration.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  10. #10
    Membre averti

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 160
    Points : 443
    Points
    443
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sovo Voir le message
    J'avais pensé à cette solution, mais comme je n'enregistre pas les index dans la table de destination, je l'ai mise de coté.

    Vu comment je galère pour faire autrement, je crois que je vais revenir a cette solution/configuration.
    Ah ok, si tu n'enregistre pas d'index dans ta table, dans ce cas tu peux simplement compter le nombre de ligne se trouvant dans ta table "SELECT COUNT(*) FROM ta_table" , ensuite que tu incrémente de 1 à chaque fois.
    Utilisez le bouton pour mettre en valeur la ou les réponses qui vous ont été les plus utiles. Marquez comme si c'est le cas.

    ''Le savoir est la seule matière qui s’accroît lorsqu’on la partage.''
    (Socrate)

  11. #11
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par abdouone0184 Voir le message
    tu dois récupérer ton lastIndex avant d'arriver dans ton tMap
    Finalement j'ai utilisé cette méthode. Je n'ai trouvé rien de mieux.

    Le resultat final

    Nom : 2018-04-17 16_45_16-Talend Open Studio for Data Integration (6.5.1.20180116_1512) _ f_Test (Conn.png
Affichages : 413
Taille : 22,9 Ko

    Merci a tous.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/03/2016, 12h34
  2. Réponses: 4
    Dernier message: 09/02/2012, 15h56
  3. Erreurs lors d'une mise en place d'une requête cron PHP
    Par Pierrick81 dans le forum Langage
    Réponses: 14
    Dernier message: 27/06/2011, 17h40
  4. Mise en place d'une solution Data Guard 9i R2
    Par user_oracle dans le forum Oracle
    Réponses: 4
    Dernier message: 16/02/2005, 10h12
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23

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