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 :

Structure complexe - gestion fct contexte


Sujet :

Développement de jobs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Structure complexe - gestion fct contexte
    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...

    • un fichier est reçu avec la structure suivante :
    • 1 enregistrement DEB composé de : "DEBUT" + un champ A2 (ID client)
    • n enregistrements CORPS composé de : "CORPS" + un champ N3 (ID produit)
  2. chaque enregistrement peut être soit en :
  3. format fixe sans délimiteur
  4. format variable avec délimiteur PIPE
  5. format variable avec délimiteur DOLLAR
  • les enregistrements sont terminés par un retour chariot


  • Le processus à implémenter doit:
    • prévoir 2 entrées différentes : une pour le format fixe sans délimiteur et une pour le format variable avec délimiteur, ce dernier étant déterminé par un contexte (lors d'une présentation, le technique de Talend m'avait dit que c'était possible mais je ne sais plus comment : on peut imaginer que les fichiers arrivent avec un nom préfixé par un n° de client ou en première ligne le n° de client + une table référençant le délimiteur pour chaque client), en effet je veux éviter d'avoir à dupliquer autant de descriptions de fichiers que de délimiteurs différents.
    • dans le cas du format variable avec délimiteur, transformer ce fichier en format fixe sans délimiteur (identique à la 1ère entrée), on se retrouve donc avec un fichier de format identique pour la suite du processus
    • contrôler la structure du fichier (présence d'un DEB et d'au moins un CORPS, valeurs A2 ou N3)
    • permettre de contrôler les valeurs du champ ID produit mais selon le champ ID client (ex : client C1 valeurs 100 et 200, client C2 valeurs 300 ou 400) et dispatcher ainsi le fichier entrant en 2 fichiers de lignes OK et KO
    • dispatcher ensuite le fichier OK en n fichiers correspondant aux valeurs de ID produit (un fichier pour les valeurs 100, un autre pour les valeurs 200, etc.)


    J'ai réussi à faire des processus simples sur Talend mais j'ai bien sûr plein de questions :
    • comment fait on un fichier de structure complexe (positionnel ou délimité)
    • comment paramétrer le délimiteur en fonction d'une table?
    • comment vérifier la structure?
    • comment vérifier les valeurs 2 types d'enregistrements?
    • comment parcourir le fichier pour dispatcher le fichier entrant en n fichiers?


    (la transfo je pense savoir faire)

    Merci mille fois si vous pouvez m'aider!

  • #2
    Membre Expert Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Par défaut
    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,

  • #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut
    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

  • #4
    Membre Expert Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Par défaut
    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.

  • #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut
    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é?

  • #6
    Membre Expert Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Par défaut
    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 ?

  • + Répondre à la discussion
    ActualitésTutoriels TalendFAQ Talend

    Discussions similaires

    1. Réponses: 4
      Dernier message: 11/02/2008, 18h03
    2. Structures complexes dans une autre structure?
      Par cata2 dans le forum MATLAB
      Réponses: 4
      Dernier message: 19/09/2007, 23h05
    3. [JDK1.3] setUndecorated() au sein de structure complexe
      Par Iván Y. dans le forum AWT/Swing
      Réponses: 2
      Dernier message: 02/05/2007, 14h30
    4. [5.5.17]Gestion du context.xml
      Par elitost dans le forum Tomcat et TomEE
      Réponses: 2
      Dernier message: 19/09/2006, 21h08
    5. [langage] structures complexes et affichage
      Par mat21 dans le forum Langage
      Réponses: 5
      Dernier message: 18/02/2004, 15h38

    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