|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 4 ![]() |
Bonjour,
Je suis débutante sur Talend et viens de passer une journée à essayer d'implémenter le processus suivant (c'est un cas d'école pour valider un besoin) et j'avoue que je dois pas être douée (je suis pas super technique). Je vous décris tout mais je suis preneuse si vous m'expliquer même une toute petite partie...
Le processus à implémenter doit:
J'ai réussi à faire des processus simples sur Talend mais j'ai bien sûr plein de questions :
(la transfo je pense savoir faire) Merci mille fois si vous pouvez m'aider! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 818 ![]() |
Bonjour,
>>comment fait on un fichier de structure complexe (positionnel ou délimité) Tes fichiers n'ont pas l'air trop complexes, il s'agits de fichiers avec 2 colonnes de type string. Le plus propre est de créer les modèles dans les meta données meta data puis file delimited et file positional. >>comment paramétrer le délimiteur en fonction d'une table? Je n'ai pas très bien compris ce que tu souhaitais faire. Tu veux stocker le délimiteur dans une table de sgbd et selon le fichier utiliser tel délimiteur ? A ce moment là le plus simple est de rechercher ton délimiteur dans ta table est de le mettre dans une variable globale (ou de contexte) puis d'appeler cette variable dans le champ délimiteur de ton tFileInputDelimited ou tFileOutputDelimited. >>comment vérifier la structure? Je ne sais pas trop : Charger les 2 colonnes et faire les tests avec des fonctions java dans un tMap par exemple row1.col1.equals("DEB")... >>comment vérifier les valeurs 2 types d'enregistrements? euh il doit manquer un ou deux mots XD, si c'est tester que ta colonne 2 est bien un numeric, tu charges la colonne au format string et tu tests la chaines avec matches() pour voir si elle ne contient que des chiffres ou pas. >>comment parcourir le fichier pour dispatcher le fichier entrant en n fichiers? Avec un tMap Cordialement, |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 4 ![]() |
Merci pour la réponse.
Je précise qu'il s'agit d'un cas d'école ici, les cas que je gère sont évidemment beaucoup plus complexes. 1) Quand je parle de fichier à structure complexe, je veux dire : - 1 occurence DEBUT - n occurences CORPS Les fichiers positionnels/délimités ne me permettent justement pas de gérer les n occurences de CORPS? Je suis obligée de passer par du XML où il y a une autre façon de faire (un type de fichier que je ne connais pas?). Par ailleurs, j'aimerais pouvoir définir dans la structure les colonnes de chaque enregistrements (ex: A2 pour l'ID client et N3 pour l'ID produit) et pas juste définir la taille de l'enregistrement. Pour ceux qui connaissent, l'objectif est aussi de pouvoir gérer des normes de type NOEMIE. 2) Pour la vérification de la structure, il s'agit de vérifier qu'on a bien une occurence DEBUT et au moins une occurence CORPS par exemple (je ne parle pas de la vérification de la sémantique) et que dans chaque enregistrement, les tailles, obligatoirités et types (string, numérique, date) soient respectés. Est-ce que le fait de définir par exemple la structure d'un FileDelimited génère une erreur si dans le processus défini, le fichier qui rentre ne vérifie pas la structure (ex : une colonne devrait être N3 or elle est A3). Sinon quel composant utiliser pour générer l'erreur? 3) Vérifier les valeurs de 2 types d'enregistrements : je veux tester par exemple que si ID client (dans l'entité DEBUT) vaut 1, alors ID produit (dans l'entité CORPS) doit valoir 200 ou 300. Merci pour vos retours |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 818 ![]() |
1) pas facile avec talend
2) si tu as de l'alphabétique à la place du numéric le ttFileInput va générer un warning , il n'arrivera pas à mettre la valeur dans la variable numérique. Ce warning doit pouvoir être catché par un tLogCatcher 3) dans un tMap tu peux faire un truc du genre dans le expression filter de l'output : row1.id_client==1 && (row1.id_prod==200 || row1.id_prod==300) alors dans ton output tu fais le traitement normal tu crées un second output en activant le output reject et dedans tu fais ta sortie d'erreur. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 4 ![]() |
1) pas facile, càd?
-> il faut que je passe par XML? -> il faut que je définisse des fichiers plats et que je fasse une fonction (quel composant) pour lire le fichier et vérifier moi même les indentations? 3) faire row1.id_client==1 && (row1.id_prod==200 || row1.id_prod==300) : cela suppose que j'aie tout sur un même row donc il faut que je transforme mon fichier structuré? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 818 ![]() |
1) pas le temps de tester
3) erf exact désolé. chez nous on aurait chargé les données dans des tables et fait du transact SQL ![]() il faut que je transforme mon fichier structuré? >> si tu peux tout mettre sur un même enregistrement alors oui ce sera plus facile (tDenormalize?), il suffira de parcourir ton enregistrement. Ils proposent qque chose sur le forum officiel ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com