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 :

Colonnes de tables dynamiques


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 104
    Points : 52
    Points
    52
    Par défaut Colonnes de tables dynamiques
    Est il possible avec Talend Open Studio de :
    . Lire le contenu d'une colonne d'une table (source) et créer une table nommée doc (destination) qui contiendra autant de colonne qu'il y a de valeur dans la table source

    Par exemple :
    Table Source(Name String) =contient--> 'toto', 'titi', 'tutu', 'tata'

    Table Dest(Doc String, toto String, titi String, tutu String, tata String)

    J'ai l'impression que la structure de la table Dest (nom de colonnes et nombre de colonnes) doit forcément être connue à l'avance. Ce qui n'est pas le cas chez moi.

    Merci d'avance,
    Blured.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    465
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 465
    Points : 287
    Points
    287
    Par défaut
    En jouant avec les tUniqRow et tDenormalize, je pense...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Oui, avec la proposition de Mathieu tu génères le ddl de création de la table (il faut voir comment tu gères les formats...).
    Et en utilisant un tBddRow au final, il devrait être possible d'exécuter ce ddl.

    Nicolas

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Pour info,

    Il y a des rumeurs comme quoi la 4.1 proposerai la gestion des schemas dynamiques.
    Pas vu sur la 4.1 RC1, peut-être sur du TIS.

    Ca serai la classe :-)

    Surtout qu'a ma connaissance, seul Datastage Enterprise Edition (PX) et AbInitio gèrent cela.

    Sinon je ferai de l'ELT maison et exécuterai mon script via tsgbdrow

    A suivre

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par blured Voir le message
    J'ai l'impression que la structure de la table Dest (nom de colonnes et nombre de colonnes) doit forcément être connue à l'avance. Ce qui n'est pas le cas chez moi.
    Mais tu en fais quoi de ta table derrière ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 58
    Points
    58
    Par défaut
    Il y aura bien les schemas dynamiques dans la version 4.1 de TIS (pas dans TOS désolé)

    Dans un schema on pourra definir un nouveau type sur une colonne, le type Dynamic et à l'interieur y stocker un schéma.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    465
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 465
    Points : 287
    Points
    287
    Par défaut
    par contre, cela veut dire qu'il faut connaître le nombre de colonnes à l'avance!
    Sinon, c'est super comme ajout de fonctionnalité!

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 108
    Points : 174
    Points
    174
    Par défaut
    Bonjour,

    Je réagis par rapport à la dernière réponse de ce topic.

    Les schémas dynamiques sont effectivement une nouvelle fonctionnalité de Talend Integration Suite. Contrairement à ce qui a été dit dans le dernier post, il n'est pas nécessaire de connaître le nombre de colonnes initialement. La seule chose à faire est de spécifier une colonne de type "Dynamic" dans le schéma de Talend.

    Pour illustrer cette fonctionnalité prenons un exemple simpliste mais parlant. Une base de données de 500 tables, avec en moyenne 50 champs par table. Force est d'admettre qu'il est trés pénible de spécifier autant de composants et de schémas qu'il y a de tables dans la base. De plus, ça n'est pas trés évolutif. Un ajout d'une table demande éventuellement la mise à jour du job.
    L'idée est donc ici de migrer toutes nos données de notre base Oracle vers notre base MySQL.

    Grâce à cette nouvelle fonctionnalité, 3 composants suffisent :

    tTableList ->Iterate-> tOracleInput -> tMySQLOutput en ne spécifiant qu'une seule colonne de type dynamique dans nos schémas. Talend va être en mesure de récupérer toutes les metadonnées, et bien sur les données, de votre table Oracle pour les transférer dans la base MySQL.


    En version 4.1, les connecteurs supportant cette fonctionnalité sont toutes les bases de données (Input et Output), ainsi que les composants tFileInputDelimited et tFileOutputDelimited. Tous les composants de type Row (tMap, tFilterRow, ... les composants de milieu de sous-job finalement) peuvent également faire transiter ce type dynamique.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Impressionnant...

    Et en pratique, le lien tOracleInput -> tMySQLOutput défini avec une colonne de type dynamique gère bien toutes les conversions de données ?

    Nicolas

  10. #10
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 108
    Points : 174
    Points
    174
    Par défaut
    Hello, si par conversion de données, tu entends conversion de types entre les différentes bases, alors tout se passe dans les fichiers de mapping.

    Oracle vers MySQL : Transformation des types Oracle en type JAVA (en utilisant le mapping_Oracle.xml), puis moulinette inverse pour transformer les types JAVA en type MySQL (en utilisant le mapping_Mysql.xml).

    Rémy.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonjour
    J'utilise Talend TDQ 4.1.1 (TDQ intègre TIS) et je constate que les composants tPostgresqlOutput ne supportent pas le schémas "dynamic".
    Qu'en est-il exactement ?
    Auriez-vous un exemple de job Talend utilisant ce type de schéma ?

    Mon besoin est de faire en boucle le traitement suivant:
    - lire fichier EXCEL (plusieurs feuilles cf Data.xls)
    - insérer les données lues (2 premiers champs ) dans une table (cf. cre_tab.sql )

    Pour chaque passage de boucle les noms et tailles de champs changent (en fonction de nom de feuille EXCEL).
    De même pour le nom de la table de sortie
    J'arrive à boucler sur les feuilles EXCEL, mais je ne sais pas comment gérer le fait que les noms/tailles de champs (fichier et tables) varient entre chaque onglet.


    Merci d'avance de vos conseils
    msomso
    P.S.
    Il s'agît d'intégrer plusieurs fichiers ayant chacun plusieurs feuilles.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 108
    Points : 174
    Points
    174
    Par défaut
    je constate que les composants tPostgresqlOutput ne supportent pas le schémas "dynamic"
    La croix rouge sur le composant en 4.1.1 est un "faux bug". Le designer indique que le composant ne supporte pas les schémas dynamiques alors qu'il les supporte. Néanmoins, il s'avère que nous avons eu pas mal de remontées de bugs sur la 4.1.1 concernant les schémas dynamiques, et notamment sur postgres. Ces problèmes ont été fixés dans la 4.1.2, dont la release a été annoncée la semaine dernière.

    Pour le reste, sachez que les schémas dynamiques ne sont "pour le moment" pas supportés par les fichiers Excel. Néanmoins, en 4.2 (version d'Avril 2011), il sera possible de manipuler ces colonnes de schémas dynamiques à l'aide de nouveaux composants et de nouvelles routines.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonjour

    Dans ce cas, quelqu'un pourrait-il me suggérer une autre approche ?

    Comment parvenir à créer un job générique afin d'insérer dans n tables le contenu de n feuilles excel ?

    Ceci en respectant le fait que les noms et tailles de colonnes sont propres à chaque table en intégrant le nom de feuille Excel.

    Mon job actuel, fonctionne mais avec les tables créées comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE "REF2"."FP_REF_T1" (
            CODE_REF character varying ,  
    	LIB_REF character varying, 
    	CONSTRAINT "PK_FP_REF_T1" PRIMARY KEY (CODE_REF)) WITH (OIDS=FALSE);
    --
    CREATE TABLE "REF2"."FP_REF_T2" ( 
    	CODE_REF character varying ,  
    	LIB_REF character varying, 
    	CONSTRAINT "PK_FP_REF_T2" PRIMARY KEY (CODE_REF)) WITH (OIDS=FALSE);
    Au lieu de script 'cible' tel que dans le fichier joint cre_tab.sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE "REF2"."FP_REF_T1" (
            CODE_REF_T1 character varying (1),  
    	LIB_REF_T1 character varying(50), 
    	CONSTRAINT "PK_FP_REF_T1" PRIMARY KEY (CODE_REF_T1)) WITH (OIDS=FALSE);
    --
    --
    CREATE TABLE "REF2"."FP_REF_T2" ( 
    	CODE_REF_T2 character varying (4),  
    	LIB_REF_T2 character varying(10), 
    	CONSTRAINT "PK_FP_REF_T2" PRIMARY KEY (CODE_REF_T2)) WITH (OIDS=FALSE);
    D'avance merci de votre attention
    msomso

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonjour
    J'ai ouvert un nouveau post pour ce problème.
    merci
    msomso

Discussions similaires

  1. [2008R2] Créer des colonnes de table dynamiquement
    Par pierick dans le forum SSIS
    Réponses: 3
    Dernier message: 03/08/2011, 09h49
  2. [MySQL] la somme d'une colonne d'une table dynamique
    Par K.aoutar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/08/2010, 01h04
  3. rajouter des colonnes à une table dynamique
    Par winsy dans le forum Composants
    Réponses: 2
    Dernier message: 27/10/2009, 13h52
  4. [WD14] Impression d'un état sur table dynamique de colonnes clonées
    Par kuranes dans le forum WinDev
    Réponses: 2
    Dernier message: 28/09/2009, 14h06
  5. table dynamique et binding sur colonnes dynamique
    Par *alexandre* dans le forum JSF
    Réponses: 3
    Dernier message: 11/09/2009, 10h59

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