#1 Mon 30 November 2009 16:50
- ceucile
- Participant occasionnel
- Date d'inscription: 5 Dec 2006
- Messages: 48
Eclater un champ en attributs
Bonjour,
Je me retrouve une nouvelle fois (cf sujet un transformer pour transposer les données)confrontée à la réorganisation d'un fichier qui est de ce type:
_____variable_________code_insee______ donnee
_____champ1___________09100__________80
_____champ1___________25200__________125
_____champ2___________09100__________60
_____champ2___________25200__________55
_______....________________....____________....
J'aimerai pouvoir l'éclater dans la forme ci-aprés, en me disant qu'un transformer ou deux doit bien exister pour y parvenir...
___code_insee________champ1_____champ2___....
_____09100____________80_________60_____....
_____25200___________125_________55_____....
_______....______________...._________...._____....
J'ai cherché du côté des transformers "attribute...", mais rien ne me semble correspondre.
Pourriez-vous me dire si ce que je demande est possible, et si oui m'indiquer les transformers à utiliser?
Merci d'avance,
Dernière modification par ceucile (Mon 30 November 2009 16:56)
Hors ligne
#2 Mon 30 November 2009 17:21
- Sarah - VEREMES
- Participant actif
- Date d'inscription: 21 Apr 2009
- Messages: 51
Re: Eclater un champ en attributs
Bonjour,
Ça me semble possible, moi j'utiliserais un Aggregator en regroupant par code_insee et en mettant une liste. Ensuite, je trierais la liste (ListSorter) par variable pour avoir tous les champ1 dans l'élément 0 de la liste et les champ2 dans l'élément 1. En faisant un clique droit sur l'attribut donnee de la liste (list.donnee{}), vous pouvez demander à éclater la liste (ici en 2). Vous pouvez utiliser attributeRenamer pour appeler, list.donnee{0} = champ1 et list.donnee{1} = champ2. Pour nettoyer un peu les données, un ListRemover et un AttributeRemover et le tour est joué!
Dernière modification par Sarah - VEREMES (Mon 30 November 2009 17:25)
Sarah MOURE
Veremes : support FME & version française
Hors ligne
#3 Mon 30 November 2009 17:25
Re: Eclater un champ en attributs
Pas très clair mais bon...
Si vous n'avez que 2 valeurs possibles dans le champ "variable" (cad 'champ1' et 'champ2') vous pouvez faire utiliser tester ("variable"='champ1') pour séparer vos enregistrement puis renommer (attributerenamer) le champ "donnee" en "donnee1" pour l'un et en "donnee2" pour l'autre, puis un featuremerger avec Code_insse pour arriver à "code_inssee" "donnee1" "donnee2"
Voilà, en fonction de ce que j'ai compris, vs devriez arriver à vos fins
Hors ligne
#4 Mon 30 November 2009 17:33
Re: Eclater un champ en attributs
C'est assez manuel mais une solution propre serait :
1. de définir tous les attributs à créer avec AttributeCreator
2. d'utiliser un AttributeFilter pour distinguer les différentes catégories de Variable (champ1, champ2...)
3. Pour chacune des sorties mettre un AttributeSetter dont seul le nom d'attribut changerait à chaque sortie. Le paramètre Valeur d'AttributeSetter serait bien sûr votre attribut "donnee".
4. Aggregator devrait pouvoir regrouper tous les attributs d'une même commune sans avoir à passer par des FeatureMerger (Regrouper par = "code_insee).
Hors ligne
#5 Mon 30 November 2009 19:28
- ceucile
- Participant occasionnel
- Date d'inscription: 5 Dec 2006
- Messages: 48
Re: Eclater un champ en attributs
Merci de toutes vos réponses.
Pour Mathieu et ogayte , j'ai malheureusement énormément de champs différents dans "variable", d'où les points de suspension à mes tableaux... C'est impossible donc de créer au préalable chaque attribut, je serais obligée de faire autrement.
J'ai testé la solution que propose Sarah - VEREMES, et qui me semblait faisable.
Dans cette solution, tout est presque parfait sauf une "petite" chose qui est celle-ci : Lorsque j'éclate ma liste en autant de variables différentes existant dans mon tableau (par exemple...200), il me crée des attributs "list{0}", "list{1}",...,"list{200}". Est-ce qu'il serait possible que ces attributs prennent automatiquement la valeur du nom du champ (dans la colonne variable du tableau initial), càd "champ1", "champ2",...,
"champ200", sans que j'ai besoin de lui spécifier par un attributeRenamer?
Encore merci pour votre précieuse aide,
Hors ligne