Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
steph24350
Contributor III
Contributor III

Mapping

Bonjour,

J'aimerais effectuer un mapping au niveau de ma "Désignation article"

Ci-dessous un script de mapping pour supprimer les accents d’une chaîne de caractère qui est donc la « Désignation article »

Aussi, j’aimerais que lorsque la « Désignation article » importée comporte   MINI BEIGNETS 5X35 FOURRES PAS, et bien que cela soit modifié en MINI BEIGNETS FRAMBOISE

Mon script fonctionne bien pour la modification des accents mais pas pour cette modification ci-dessus.

Pourriez-vous m'aider, ai-je fait une erreur dans le script ?

 

Merci à vous !

 

// Table de mapping ==> Suppression des accents
//*********************************************

MapSupprimeAccent:
Mapping LOAD * INLINE [
From, To


MINI BEIGNETS 5X35 FOURRES PAS, MINI BEIGNETS FRAMBOISE
à, a
á, a
â, a
ã, a
é, e
ê, e
í, i
ó, o
ô, o
õ, o
ú, u
À, A
Á, A
Â, A
Ã, A
É, E
Ê, E
Í, I
Ó, O
Ô, O
Õ, O
Ú, U
ç, c
Ç, c
];

 

NoConcatenate
DataSage:
LOAD
        'SAGE_'&RowNo() as No_Facture_Sage,
       F1,
     F2,
     [code du client final],
     [libéllé client final],

     [Code commercial],
     [Nom commercial],
     TEXT([Ref article]) as [Ref article],
     MapSubString('MapSupprimeAccent',upper(rtrim(left([Désignation article],30)))) as [Désignation article],
     [Nb de cartons facturés], 

 

4 Replies
Taoufiq_Zarra

Bonjour @steph24350 

à mon avis ya aucun problème dans le script sauf qu'il faut faire attention à la limite 30 dans left([Désignation article],30)

30 c'est exactement la taille de MINI BEIGNETS 5X35 FOURRES PAS

donc upper(rtrim(left('MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh d',30))) retournera MINI BEIGNETS 5X35 FOURRES PAS et avec MapSubString le résultat est MINI BEIGNETS FRAMBOISE MapSubString joue le role de remplacer puisque il ya pas de texte ni avant ni après (limite de 30)

voilà un exemple :

cas avec 30

Map1:
mapping load * inline [
From, To
MINI BEIGNETS 5X35 FOURRES PAS,MINI BEIGNETS FRAMBOISE
à, a
];

Data:

load *,MapSubString('Map1',upper(rtrim(left([Désignation article],30)))) as [NewDésignation article] inline [
Désignation article
MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh
dskjfmds à
]

output:

Capture.PNG
le reste de texte : dsjhflkdjfh sflkdfh est invisible à cause de la limite 30

cas2: limite 40 ou sans limite :

Map1:
mapping load * inline [
From, To
MINI BEIGNETS 5X35 FOURRES PAS,MINI BEIGNETS FRAMBOISE
à, a
];

Data:

load *,MapSubString('Map1',upper(rtrim(left([Désignation article],40)))) as [NewDésignation article] inline [
Désignation article
MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh
dskjfmds à
]

output:

 

Capture2.PNG

on a bien le reste du texte

 

 

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
brunobertels
Master
Master

Bonjour 

plutot que de faire un mapping pour une seule occurrence à remplacer , je te propose d'utiliser la fonction REPLACE() 

soit ici ( çà çà marche ) 

   MapSubString('MapSupprimeAccent',upper(rtrim(left(replace([Désignation article],' MINI BEIGNETS 5X35 FOURRES PAS','MINI BEIGNETS FRAMBOISE')30)))) as [Désignation article],

 

sinon dans la table d'origine : 

load 

...

replace([Désignation article],' MINI BEIGNETS 5X35 FOURRES PAS','MINI BEIGNETS FRAMBOISE') as [Désignation article],

...

from ...

 

 

steph24350
Contributor III
Contributor III
Author

Merci pour les réponses !

Concernant le REPLACE

Si j'ai plusieurs remplacements à effectuer, puis-je toujours me servir du REPLACE ?  Et si oui comment faire ?

 

Merci à vous

Bien cordialement,

 

brunobertels
Master
Master

Bonjour 

oui il est possible de faire plusieurs remplacement à la volée .. 

Il faut imbriquer la fonction replace comme ceci 

replace(replace([MADIMENSION],'ValeurA','ValeurA1'),'ValeurB',ValeurB1')) et ainsi de suite