Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Mon 26 March 2012 16:00

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Récupérer les noms des attributs

Bonjour,

J'aimerais savoir s'il est possible de récupérer les noms des différents attributs et rentrer ces derniers dans un attribut.

L'objectif est donc de créer une liste des différents attributs d'une table ou plusieurs tables.

Par avance, merci pour votre aide.

Dernière modification par heretik25 (Mon 26 March 2012 16:30)


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#2 Mon 26 March 2012 20:17

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Récupérer les noms des attributs

Bonjour

Avec une boucle TCL par exemple :

Code:

proc attribut{} {

global FME_AttributeNames;
  foreach attr [FME_AttributeNames] {
    if {![regexp {^fme_} $attr]} {
     append champs $attr ;
     set val [FME_GetAttribute $attr]
     append champs ";"
     append champs $val
     append champs ";"
     } else {
     append champs ""}
     };
   return $champs
   }
FME_SetAttribute [nom_du_champ]
}

De mémoire

Bonne soirée


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#3 Tue 27 March 2012 08:51

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Bonjour Pierre,

Merci pour la proposition. Par-contre qu'est-ce que vous entendez par [nom_du_champ] ?

Merci pour la précision.

Dernière modification par heretik25 (Tue 27 March 2012 08:55)


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#4 Tue 27 March 2012 14:42

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Dans la même logique, je cherche le moyen de renommer tous les attributs avec le même nom.

J'imagine qu'il faut user aussi du TCL ?

Merci.


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#5 Tue 27 March 2012 16:35

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Récupérer les noms des attributs

Bonjour,

[Nom du champ] c'est, entre crochets, le nom de l'attribut qui va récupérer une chaîne composée des noms des attributs séparés par un ';'.
Renommer tous les attributs portant le même nom, ou renommer tous les attributs avec le même nom ?
Dans le cas 1/, il faut regarder du côté de la fonction @AttributeCopier je pense.
Dans le cas 2/, je ne suis pas sûr de saisir.
Dans tous les cas, cela doit être possible sans TCL, mais je trouve le tcl plus compact.

De rien, tenez nous au courant


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#6 Tue 27 March 2012 17:28

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Avec l'utilisation du code TCL ci-dessus, j'ai une erreur en rouge dans le log. Il ne comprend pas [nom_du_champ] et si j'enlève cette ligne, c'est toujours le drame.


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#7 Tue 27 March 2012 17:37

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Récupérer les noms des attributs

ok. alors on va reprendre :

Code:

proc attribut {} {

global FME_AttributeNames;
  foreach attr [FME_AttributeNames] {
    if {![regexp {^fme_} $attr]} {
     append champs $attr ;
     set val [FME_GetAttribute $attr]
     append champs ";"
     append champs $val
     append champs ";"
     } else {
     append champs ""}
     };
   return $champs
   
}

il manquait un espace entre attribut et {}. la commande return renvoie le résultat dans l'attribut (généralement _result) du TCLCaller.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#8 Wed 28 March 2012 09:01

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Bonjour,

Merci pour cette nouvelle proposition qui ne fait plus "râler" FME mais qui ne renvoi rien dans le champ de destination.

Une idée d'où cela peut venir ?


@bientôt


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#9 Wed 28 March 2012 09:51

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Récupérer les noms des attributs

Non pas d'idée, mais voici un exemple (sauvegardé sous FME2011).
Pour infos, le précédent tcl lister l'attribut ET sa valeur. J'ai mis en commentaire les lignes sur la valeur de l'attribut.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#10 Wed 28 March 2012 10:38

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Bonjour,

Merci pour l'exemple. En fait, je n'implémentais pas correctement le code dans le TCL Caller.

Dernière modification par heretik25 (Wed 28 March 2012 10:46)


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#11 Wed 28 March 2012 12:59

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Récupérer les noms des attributs

Pour la copie d'attributs :

Code:

 FME_CopyAttribute <new name> <old name>

Donc par exemple, s'il s'agit de renommer tous les attributs a en b :

Code:

proc attribut {} {

global FME_AttributeNames;
  foreach attr [FME_AttributeNames] {
    if {[regexp {a} $attr]} {
    FME_CopyAttribute "b" $attr ;
     } else {

     };
 
}

s'il s'agit d'ajouter '1_' au noms des attributs :

Code:

proc attribut {} {

global FME_AttributeNames;
  foreach attr [FME_AttributeNames] {
    if {![regexp {^fme_} $attr]} { #filtre sur les attributs ne commençant pas par fme*
          set a "1_" ; #création du préfixe "1_"
     append a $attr ; #concaténation du préfixe et de l'ancien nom d'attribut

     FME_CopyAttribute $a $attr ; #copie de l'ancien attribut dans le nouvea

     } else { }
  
     };
  
}

Voilà.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#12 Wed 28 March 2012 13:39

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Merci pour cette ressource !

Je vais essayer de modifier le premier code pour renommer tous les attributs sauf deux qui ne doivent pas changer.

Dernière modification par heretik25 (Wed 28 March 2012 13:50)


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#13 Wed 28 March 2012 13:54

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Une autre question. Nous avons réussi à récupérer le nom des différents attributs, serait-il possible de créer une sorte de tableau associatif qui me permettrait de lier le nom de l'attribut et sa valeur ?

Ex : attribut1->'4';attribut2->'toto';...


et ensuite être en mesure d'exploiter ces informations.



Sinon, il me faudrait être en mesure de faire une jointure entre la valeur d'un attribut et le nom d'un autre attribut. Est-ce possible ?

La PJ, montre en rouge ce que j'aimerais faire

Dernière modification par heretik25 (Wed 28 March 2012 14:26)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#14 Wed 28 March 2012 14:25

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: Récupérer les noms des attributs

Vu vos besoins, je vous suggère de regarder 2 transformers très utiles :
AttributeDereferencer
AttributeExpressionRenamer (FME 2012).

Enfin PythonCaller permet de gérer de manière très fine avec du python les changements de structure de données.


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#15 Wed 28 March 2012 14:30

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1019
Site web

Re: Récupérer les noms des attributs

Bonjour Olivier,

AttributeDereferencer est une petite merveille big_smile !

Merci !


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#16 Tue 06 November 2012 12:05

aduval
Juste Inscrit !
Date d'inscription: 6 Nov 2012
Messages: 9

Re: Récupérer les noms des attributs

Bonjour à tous,

Je fais des transformations de données de Oracle vers APIC, et je souhaite ajouter une lettre ou un texte devant une valeur d'attribut destination. La valeur de cette attribut est un nombre et représente l'identifiant d'un objet.
Ex : pour une valeur qui est "154578" je veux ajouter A devant. "A154578".

Merci d'avance

Hors ligne

 

#17 Tue 06 November 2012 12:53

aduval
Juste Inscrit !
Date d'inscription: 6 Nov 2012
Messages: 9

Re: Récupérer les noms des attributs

Désolé je n'est pas posté mon message au bon endroit.
merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB