#1 Mon 26 March 2012 16:00
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
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
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
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
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.
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
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
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
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)
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
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.
Hors ligne
#15 Wed 28 March 2012 14:30
Re: Récupérer les noms des attributs
Bonjour Olivier,
AttributeDereferencer est une petite merveille !
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