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é ?

#1 Thu 06 April 2023 15:30

ploufplouf007
Participant occasionnel
Date d'inscription: 14 Oct 2012
Messages: 14

Transposer une table

Bonjour.

Alors c'est pas réellement le bon terme, mais c'est l'idée...
J'ai réussi à le faire en bricolant un peu le fichier excel que j'avais en entrée, mais je n'arrive pas à trouver de solution dynamique pour le faire au sein d'un script FME...

L'idée, c'est que j'ai une table en entrée de ce type :

COMMUNE      A       B      C      D
ICI                1                2
LABAS           3        1              4
LOIN                       2              1


Et j'aimerais obtenir :

COMMUNE      _result
ICI                A
ICI                C
LABAS           A
LABAS           B
LABAS           D
LOIN              B
LOIN              D


L'idée est de pouvoir le faire à la volée...

Ce que j'ai fait de mon côté, c'est que j'ai donné les valeurs des noms de champs aux cellules dans lesquelles il y avait une valeur pour ce champ.
J'ai regroupé toutes les colonnes au sein d'un champ unique dans un premier CSV avec séparateurs virgule.

J'ai collé tout ça dans une colonne à côté de la colonne des communes.
Et j'ai crée ensuite un CSV avec séparateurs point-virgule.

Ca donne :


COMMUNE  ;    ATTRIBUT
ICI            ;    A,C
LABAS       ;    A,B,D     
LOIN          ;    B,D


J'ai ensuite ouvert FME, lu mon CSV, collé un attributesplitter sur la virgule, et fait un listexploder.

Tout ça fonctionne, mais c'est moche...

Vous avez une idée ?

Dernière modification par ploufplouf007 (Thu 06 April 2023 15:32)

Hors ligne

 

#2 Thu 06 April 2023 19:31

Benoit D
Participant assidu
Date d'inscription: 17 Jul 2018
Messages: 150

Re: Transposer une table

Bonjour,
Etes-vous bien conscient que vous perdez les informations numériques qui sont contenues dans la table d'origine ?
Que LABAS / A valait 3 et pas 1 ?

Pour arriver à vos fin renommez vos attributs A,B,C,D en A0,A1,A2,A3 par un AttributeRenamer bref un texte identique suivi d'un numéro d'ordre commençant par 0.
Puis un ListPopulator avec la lettre A comme préfixe ou le texte identique choisi.
Et un ListExploder pour obtenir autant d'entrées que d'éléments de liste.

En ajustant les autres paramètres vous conserverez ou supprimerez les attributs restants.

Dernière modification par Benoit D (Thu 06 April 2023 21:35)

Hors ligne

 

Pied de page des forums

Powered by FluxBB