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

Pentaho Discussion :

separation de champs avec pentaho


Sujet :

Pentaho

  1. #1
    Membre régulier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut separation de champs avec pentaho
    Bonjour ,
    J'aimerai faire la transformation suivante par Pentaho.
    je veux extraire les données d'un fichier log et les mettre dans une table MySQL.
    mon fichier log contient plusieurs ligne de format différent, donc mon soucis est de distinguer entre les lignes de telle façon que chaque champ du fichier aille dans le champ lui correspondant dans la table.
    exple simple:
    la table MySQL contient les champs suivant: Nom, Prenom, Adresse, Age
    j'ai deux lignes dans mon fichier log
    ligne 1: AAAA ; aaaa ; Maroc
    ligne 2: BBBB ; bbbb ; 13
    comment faire pour que les les données Maroc s'enregistre dans le champ Adresse, et la données 13 s'enregistre dans le champ Age.

    Merci d'avance

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    si tu as une dimension géographique ou une table avec les pays tu peux faire une étape 'recherche dans base de données' à condition que t'es la même orthographe que dans ton fichier ou tu fais 'une évaluation par reg exp' par contre si t'as plusieurs lignes ça doit être gourmand surtout si tu n'as pas de structure définie pour chaque lignes ce qui fait que tu devras tester chaque champs pour chaque lignes...

  3. #3
    Membre régulier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Merci pour votre réponse.
    Mais franchement je n'est pas bien compris (genre pas du tout, je suis débutante).
    je n'ai donné qu'un simple exemple, car les ligne de mon fichier log sont très longues et ont plusieurs formats.(j'ai 5 format dans mon fichiers)
    pouvez vous SVP m'expliquer en détails comment utiliser "évaluation par Regex" ?

  4. #4
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    si tu utilises kettle qui est normalement intégré dans pentaho, je te dirai plutôt d'utiliser un script java interprété vu la complexité de ton fichier. si tu sais coder en java tu pourras manipuler chaque champs de chaque ligne que tu affecteras à une variable de ton choix et du type de ton choix.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var age;
    if(isNum(Field_000.getString()) && (Field_000.getString().length == 2 || Field_000.getString().length == 1)){
    	age = Field_000.getString();
    }
    if(isNum(Field_001.getString()) && (Field_001.getString().length == 2 || Field_001.getString().length == 1)){
    	age = Field_001.getString();
    }
    ....
    voici un exemple de code vite fait mais tu peux faire encore mieux :
    -tu fais une extraction depuis ton fichier csv (si tu as des entêtes de colonnes tant mieux sinon kettle nommera chaque champs par défaut)
    et tu mets tout tes champs en string.
    -tu lies ça à une étape 'Appel script interprété Rhino', tu coches mode compatible et le bout de code du dessus teste si le champs est numérique admettons l'age et vérifie que c'est bien sur 1 ou 2 chiffres comme l'age et pas autre chose...une fois que tu as fini ton script tu cliques sur 'transmettre les variables' et tu choisies celles que tu veux transmettre...

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Par défaut
    utilise le script pour séparer les champ suivant sa nature:
    - dans le fichier d'extraction, g définit 3 champs: ch1, ch2, ch3
    - dans le script java, g utilisé la fonction isNum (dans fct d'évaluation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var Pays=null
    var Age=null
     
    if (isNum(ch3)==true)
        {
            Age=ch3
        }
    else
        {
            Pays=ch3
        }
    - et puis dans la table, g lié les champs

    ça a marché pour moi

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

Discussions similaires

  1. champ avec une valeur?
    Par sonialem2000 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/06/2004, 08h23
  2. Update champ avec le meme champ de la meme table
    Par Baquardie dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/06/2004, 11h17
  3. ASP champs avec même nom
    Par pete007 dans le forum ASP
    Réponses: 8
    Dernier message: 03/05/2004, 22h58
  4. [CR][ASP.NET] Un champ avec plusieurs polices...
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 08/04/2004, 14h19
  5. Comment renommer un champ avec Module BD?
    Par technico dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/01/2004, 21h24

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