Pages: 1
- Sujet précédent - Réduire le nombre de StringReplacer par un transformer unique? - Sujet suivant
#1 Tue 15 November 2011 16:07
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Je souhaite simplifier mon bench pour en améliorer la lisibilité :
J'ai un champ LIBELLE sur lequel je recherche le mot directeur (dans ce cas précis, il s'agit du dernier mot du LIBELLE) :
Exemple :
LIBELLE = les balcons du savoy
DIRECTEUR = savoy
Cependant dans certains cas particuliers, le dernier mot n'est pas le plus pertinent du LIBELLE :
Exemple: la poya d'en haut
Je passe par un tester pour obtenir les occurrences avec ce type de suffixe (d'en haut, dessus...) afin de les supprimer à l'aide d'un StringReplacer.
Dans l'exemple ci-dessus:
LIBELLE = la poya d'en haut
LIBELLE (après passage dans StringReplacer) = la poya
DIRECTEUR = poya
J'arrive à supprimer l'ensemble des suffixes indésirable seulement je me retrouve avec une vingtaine de StringReplacer les uns à la suite des autres.
Existerait-il une solution pour remplacer mes 20 StringReplacer par un seul transformer?
Merci beaucoup pour vos suggestions!
Hors ligne
#2 Tue 15 November 2011 16:54
Re: Réduire le nombre de StringReplacer par un transformer unique?
Je pense qu'avec un stringreplacer en cochant expression régulières et en mettant ce que tu veux faire disparaitre avec une barre | entre les possibilités
les balcons du|machin
Dis nous.
Dernière modification par heretik25 (Tue 15 November 2011 16:55)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Wed 16 November 2011 06:14
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 345
Re: Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Autre possibilité, tu peux utiliser un StringPairReplacer, ainsi, tu peux appareiller la 1ère substitution, la 2ème, la 3ème .... dans un même transformer. Par contre, l ne faut pas que les chaines à traiter contiennent des espaces puis que je crois que le séparateur d'item est obligatoirement le caractère espace.
tiens-nous au courant de tes avancées !
Hors ligne
#4 Wed 16 November 2011 14:15
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Re: Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Tout d'abord merci pour les suggestions.
En utilisant dans le StringReplacer l'expression suivante D' EN BAS | D' EN HAUT
Le transformer n'a pas de problème pour la deuxième expression mais il ne supprime pas la première??? Les espaces ne le dérange pourtant pas dans D' EN HAUT.
La solution de passer par le StringPairReplacer ne fonctionne pas car l'espace est un caractère particulier de ce transformer :
D' EN BAS => D' est remplacé par EN.
L'autre soucis dans le StringPairReplacer c'est que je souhaite supprimer D' EN BAS par rien et il n'est pas possible de faire ça avec ce transformer.
Si quelqu'un avait d'autres suggestions car je sèche pour le moment!
Hors ligne
#5 Wed 16 November 2011 14:38
Re: Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Tout d'abord merci pour les suggestions.
En utilisant dans le StringReplacer l'expression suivante D' EN BAS | D' EN HAUT
Le transformer n'a pas de problème pour la deuxième expression mais il ne supprime pas la première??? Les espaces ne le dérange pourtant pas dans D' EN HAUT.
La solution de passer par le StringPairReplacer ne fonctionne pas car l'espace est un caractère particulier de ce transformer :
D' EN BAS => D' est remplacé par EN.
L'autre soucis dans le StringPairReplacer c'est que je souhaite supprimer D' EN BAS par rien et il n'est pas possible de faire ça avec ce transformer.
Si quelqu'un avait d'autres suggestions car je sèche pour le moment!
Pourtant, chez moi ça fonctionne.
En pj, un exemple concret.
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#6 Wed 16 November 2011 16:16
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Re: Réduire le nombre de StringReplacer par un transformer unique?
Ca fonctionne ENFIN!!!!
La méthode d'heretik25 est la bonne. En fait j'ai trouvé pourquoi cela ne fonctionnait pas avant dans mon cas.
Je prenais le cas des suffixes D'EN HAUT. Dans ma base, le suffixe est orthographié de trois manières différentes :
D'EN HAUT
D' EN HAUT
D ' EN HAUT
Je mettais dans le transformer la liste d'expression dans cet ordre : D ' EN HAUT|D' EN HAUT|D'EN HAUT => il ne se passait rien (d'où mon dernier message).
Pour que cela fonctionne, il faut écrire l'expression dans cet ordre précis : D'EN HAUT|D' EN HAUT|D ' EN HAUT
Merci pour le coup de pouce!
Cheers
Hors ligne
#7 Wed 16 November 2011 16:29
Re: Réduire le nombre de StringReplacer par un transformer unique?
C'est parfait si tu as réussi, à charge de revanche !
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#8 Wed 16 November 2011 16:48
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Réduire le nombre de StringReplacer par un transformer unique?
Aloha
Pour être un peu plus "orthodoxe", il faut écrire D\\s?'\\s?EN HAUT.
Cordialement,
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
#9 Thu 17 November 2011 08:20
Re: Réduire le nombre de StringReplacer par un transformer unique?
Sauf qu'il n'y avait pas que des D\\s?'\\s?EN HAUT d'après ce que j'ai compris...
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#10 Thu 17 November 2011 08:59
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Réduire le nombre de StringReplacer par un transformer unique?
Alors il suffit d'écrire D\\s?'\\s?EN (HAUT|BAS). Un petit cours sur les regexp est à prévoir dans le wiki à ce que je lis...
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
#11 Thu 17 November 2011 09:15
Re: Réduire le nombre de StringReplacer par un transformer unique?
CF le premier message du demandeur d'aide :
Je passe par un tester pour obtenir les occurrences avec ce type de suffixe (d'en haut, dessus...) afin de les supprimer à l'aide d'un StringReplacer.
Dans l'exemple ci-dessus:
LIBELLE = la poya d'en haut
LIBELLE (après passage dans StringReplacer) = la poya
DIRECTEUR = poya
On ne sait pas combien il a de différence à traiter, apparemment une vingtaine puisqu'il avait 20 stringReplacer.
Mais bon là n'est pas la question, la méthode fonctionne pourquoi chipoter ?
Dernière modification par heretik25 (Thu 17 November 2011 10:01)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#12 Thu 17 November 2011 09:48
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Réduire le nombre de StringReplacer par un transformer unique?
Pourquoi chipoter ? :?
Parce qu'un code syntaxiquement correct est la condition sine qua non pour un traitement efficace. Efficace et facilement partageable.
Une expression régulière ce n'est pas un simple copier/remplacer, c'est l'analyse syntaxique des plus grands dénominateurs communs, selon moi. Et c'est en se fixant cet objectif que l'on peut obtenir le meilleur résultat. Sinon, pourquoi chercher à remplacer les 20 string replacer ?
Parce que je ne chipote pas, je dis juste que l'expression que je propose est plus efficiente, qu'elle respecte mieux l'esprit des expressions régulières et qu'elle permettra d'être réutiliser dans d'autres cas de figures.
Je ne critique aucune méthode, mais avec les problèmes que certains d'entre nous rencontre dans les allongements de temps de traitements FME, les problèmes d'allocations de ressources, autant ne pas gaspiller les ressources dans des syntaxes alambiquées.
Je n'exprime que mon point de vue. Et non une vérité, que les choses soient écrites.
En vous souhaitant à tous une bonne journé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
#13 Thu 17 November 2011 10:01
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Re: Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Voici la liste de l'ensemble des suffixes que je veux supprimer : (Bien faire attention au espace avant les expressions qui peuvent être important dans certains cas, l'ordre dans lequel on met les expressions a son importance également)
StringReplacer 1
D'EN HAUT|D' EN HAUT|D ' EN HAUT|
D'EN - HAUT|D`EN HAUT|
D EN HAUT|D-EN HAUT|
EN HAUT| LE HAUT| DU HAUT|
D'EN HAUTE| HAUT|
D'EN BAS|D' EN BAS|D ' EN BAS|
D EN BAS|D-EN BAS|
EN BAS
StringReplacer 2
DE DESSOUS| DE DESSUS| DESSOUS| DESSUS|
DU DEVANT| DE DEVANT| DE DERRIERE| DU DERRIERE| SUR LE DEVANT|
DEVANT| DERRIERE|
DU MILIEU
StringReplacer 3
DU NORD| AU NORD| NORD|
DU SUD| AU SUD| SUD
OUEST| EST
au final je passe par seulement 3 stringreplacer mais c'est beaucoup plus compact qu'avant (plus d'une vingtaine). Je n'ai pas testé de tout mettre dans un seul stringreplacer, cela marche sans doute, à moins qu'à un moment donné on atteigne un quota de caractères?!?
L'idée d'un cours sur les regexp semble intéressante dans mon cas.
Un grand merci à vous tous pour vos suggestions.
Dernière modification par Froggies (Thu 17 November 2011 10:04)
Hors ligne
#14 Thu 17 November 2011 10:04
Re: Réduire le nombre de StringReplacer par un transformer unique?
J'ai apparemment piqué au vif un fan des choses parfaitement faites ! Pour moi la regexp semblait trop compliqué à mettre en œuvre sachant les nombreux cas tous différents les uns des autres (je ne connaissais pas les cas à modifier). D'après moi, s'il faut 2 heures pour écrire la regexp pour qu'ensuite le traitement gagne 10 secondes, je me pose la question de savoir si cela est encore pertinent ? :p
Il y a donc parfois, selon moi un monde entre la réalité et le "syntaxiquement correct".
Bonne journée également.
Dernière modification par heretik25 (Thu 17 November 2011 10:20)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#15 Thu 17 November 2011 10:25
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Réduire le nombre de StringReplacer par un transformer unique?
J'ai apparemment piqué au vif un fan des choses parfaitement faites ! ...
Bonne journée également.
Piqué au vif ? C'est encore loin du compte.
Alors avec 1h d'avance, la syntaxe :
Code:
(D?\\s?\\'?\\-?\\s?EN|DE|LE|DU|SUR|AU|\\s)?(\\s?\\-?(LE)?\\s?(HAUT|BAS|DESSOUS|DESSUS|DEVANT|DERRIERE|MILIEU|NORD|SUD|EST|OUEST))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
#16 Thu 17 November 2011 11:09
Re: Réduire le nombre de StringReplacer par un transformer unique?
Ne partons pas dans un débat stérile, superbe regexp :clap
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#17 Fri 18 November 2011 10:42
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Re: Réduire le nombre de StringReplacer par un transformer unique?
Bonjour,
Je reviens sur l'utilisation d'un Stringreplacer unique mais cette fois-ci pour des caractères particuliers de type : (, ), ., -, _.....
Si je tente de les mettre dans un stringreplacer unique (|)|.|-|_ cela ne fonctionne pas! Pourquoi?
Même chose si je combine des lettres et ces caratères particuliers dans le style (hameau)?
Une idée de ce qui manque pour que cela fonctionne?
Hors ligne
#18 Fri 18 November 2011 11:08
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Réduire le nombre de StringReplacer par un transformer unique?
Aloha
Pour utiliser des caractères autres qu'alphanumérique (",;\|...) il faut les faire précéder d'un \ en regexp, donc de \\ dans la boîte FME (cf la chaîne proposée).
Si je cherche par exemple
Code:
hameau?
Il va me falloir écrire
Code:
hameau\\?
Regexp'ement
PS. Il existe des codes pour les espaces (\\s), pour les tabulations, les retour chariot,... cf ici
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
#19 Fri 18 November 2011 14:00
- Froggies
- Participant occasionnel
- Date d'inscription: 3 Aug 2011
- Messages: 21
Re: Réduire le nombre de StringReplacer par un transformer unique?
Un grand merci c'est juste ce qu'il me fallait (et merci pour le lien sur les regexp)!
Hors ligne
Pages: 1
- Sujet précédent - Réduire le nombre de StringReplacer par un transformer unique? - Sujet suivant