Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 10h47   #1
Invité régulier
 
Inscription : janvier 2011
Messages : 100
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 100
Points : 7
Points : 7
Par défaut TALEND fonction JAVA permettant de générer des clé (KEY)

Bonjour,

Je travaille avec TALEND, je suis débutante.

JE veux ajouter dans la Tmap un champ que je vais considerer comme une clé, donc je voudrais savoir si y a une méthode JAva qu'on peut appeler qui permet de générer des clé automatiquement pour les affecter au champs que je vais ajouter.

Y a t-il quelqu'un qui a fait ça auparavant SVP ??

Avez vous une solution à me proposer SVP ??,

Merci d'avance
delilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 12h01   #2
Membre habitué
 
Inscription : août 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 117
Points : 145
Points : 145
Tout dépend du but recherché.

Tu peux générer une séquence via "Numeric.sequence("s1",1,1)" dans une variable de ton tMap cependant, cette séquence sera réinitialisée à chacun des lancements de ton job.

Si le but est de générer des ID dans la base cible, alors le plus simple reste encore de déclarer la séquence dans ta base.
tetsu no tama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 12h27   #3
Invité régulier
 
Inscription : janvier 2011
Messages : 100
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 100
Points : 7
Points : 7
Tout d'abord je vous remercie infiniment

OUi, c'est ça mon but est de déclarer des ID dans la base cible.

Sachant que je travaille avec Oracle, comment puis je déclarer cette séquence dans la base. ??

Avez vous une idée SVP ?? ça m'aidera vraiment

Merci beaucoup

Comment je peux créer un trigger dans Oracle qui permet de déclarer cette séquence.....
delilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 14h42   #4
Membre actif
 
Consultant informatique
Inscription : mars 2003
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2003
Messages : 130
Points : 181
Points : 181
Google est ton ami
resultat pour la sequence :
http://www.techonthenet.com/oracle/sequences.php

Tu n'a pas besoin de trigger pour utiliser ta sequence..
Un trigger ne permet pas de déclarer une sequence....
Un trigger est un déclencheur, il permet d'exécuter une action si une autre action à été exécuter.
Exemple : insert une ligne dans une table de log quand le champs X de la table T est updater.
Si tu veux en savoir plus sur les trigger une recherche google est vite fait.

Pour ton problème, tu dois juste surcharger la colonne au niveau de ton composant tOutputOracle.
Dans l'onglet paramètre avancé de ton composant tu as un espace avec un cadre nommé colonnes additionnel.
tu ajoute une colonne ayant comme colonne de reference ton ID,
en position tu met REMPLACER,
dans expression sql "masequence.nextval()",
et dans nom le nom de ta colonne ID.
kisskool45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 18h07   #5
Membre habitué
 
Inscription : août 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 117
Points : 145
Points : 145
L'utilisation de la séquence dans les colonnes additionnelles comporte un risque, à savoir la séquence ne sera pas incrémentée si une ligne est insérée par autre chose que l'ETL qui ne fait pas appel à la séquence (un applicatif par exemple).

Cela peut être cohérent si la table cible n'est alimenté que par l'ETL mais cela peut comporter un risque s'il s'agit d'une base opérationnelle.

En conclusion, lorsqu'on utilise une séquence pour alimenter un ID et que l'on veut garantir son unicité, il faut ABSOLUMENT que cette séquence soit appliqué à TOUS les insert dans cette table. La solution de la gestion de cette séquence via l'ETL n'est pas une bonne pratique.

Concernant la remarque sur les trigger (trigger before insert), c'est pourtant une des solutions proposées par les DBA pour gérer les ID auto incrémentés puisque, en Oracle, il n'existe pas l'équivalent de IDENTITY.

(En outre la proposition que j'ai faite tantôt dans un post similaire d'utiliser le default ne fonctionne pas)
tetsu no tama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 18h26   #6
Invité régulier
 
Inscription : janvier 2011
Messages : 100
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 100
Points : 7
Points : 7
En fait finalement on va pas faire update dans la base de données sur ce champs que je vais rajouter..

Donc ta solution que tu m'a proposé est la bonne

"Tu peux générer une séquence via "Numeric.sequence("s1",1,1)" dans une variable de ton tMap cependant, cette séquence sera réinitialisée à chacun des lancements de ton job."

Par contre , pour le mme job je dois apeler plusieurs fois cette méthode "Numeric.sequence("s1",1,1)" pour l'attribuer à chaque ligne de mon fichier, cad pour chaque ligne je dois rajouter un champs qui sera une clé; Mais avec cette méthode "Numeric.sequence("s1",1,1)" il va me générer la meme séquence pour toutes les lignes alors c'est pas ça ce que je veux

Je veux rajouter un champs pour chaque ligne de fichier, et ce champs sera une clé ....

SVP pouvez vous m'aidez ???

ça sera vraiment gentill de votre part

Merci beaucoup
delilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h18.


 
 
 
 
Partenaires

Hébergement Web