Qlik Community

Ask a Question

Groupe des Utilisateurs Francophones

Announcements
Our next Qlik Insider session will cover new key capabilities. Join us August 11th REGISTER TODAY
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

> Script : Mapping de table

Bonjour à tous,

je réalise actuellement un suivi de relevés de compte sous Qlikview.

J'ai réussi à générer une courbe de suivi du solde par date.

Je souhaiterais maintenant affecter des catégories aux opérations pour évaluer leur poids et suivre des budgets.

Je souhaite donc mapper la colonne détail de l'opération avec une table de mappage qui contiendrait les catégories.

Exemple : "Carte Bancaire du 10/02 chez MacDo" ---> à mapper par ----> "CB"

Le soucis, c'est que je souhaite mapper qu'une partie du champ, ici  "Carte Bancaire". Car le reste varie selon la date ou le lieu.

Je n'ai pas trouvé de fonction de mapping qui permettrait de mapper une partie de la valeur d'un champ.

Merci par avance pour vos idées.

Cdlt.

David

1 Solution

Accepted Solutions
Not applicable
Author

Ci-joint un exemple trouvé sur le net pour un "Wildmatch ApplyMap" :

table1:
MAPPING LOAD
match
,':' & description & ':' as description
INLINE [
match, description
LS01, team1
LS02, team2
LS03, team3
];

table2:
LOAD *
,rangeminstring('others',subfield(mapsubstring('table1',string),':',2)) as description
INLINE [
string, value
AALS01DD, 10
ABLS01EE, 20
ACLS02GG, 50
LLLS02EE, 10
RRLS03QQ, 50
TTLS05QQ, 10
];


Merci à JohnW


wildmatch and looping though table

View solution in original post

7 Replies
mambi
Creator III
Creator III

je n'ai pas bien compris ton problème mais il se trouve qu'il y est une fonction left(ton_champ, nombre de caractère)

qui permet d'extraire une partie d'une chaine ensuite tu pourras la comparer

Not applicable
Author

J'ai ajouté un fichier excel type pour illustrer mon besoin.

J'ai effectivement essayé le left mais cela complique le script et il me faut quasiment 24 left pour associer toutes les catégorie à la colonne libéllé.

Sans compter que parfois le texte à mapper est au milieu de la chaine de caractère du champ.

En fait, il faudrait que je puisse matcher une chaine de caractère définie dans le champ libellé et affecter une catégorie.

Je pensais que je pouvais mapper le champ libellé un peu comme MapSubstring() mais sans garder les autres charactères du champ pour obtenir un champ catégorie.

Je vais essayer une combinaison avec MapSubstring() et SubField() pour isoler ma catégorie grace au délimiteur.

A suivre...

Not applicable
Author

Bonjour,

Si Left() ne convient pas tu peux essayer avec WildMatch()

Cordialement,

Xavier.

Not applicable
Author

J'ai testé Wildmatch et cela fonctionne parfaitement, le soucis c'est que je suis obligé de modifier le script si je dois matcher une autre chaine de caractère.

Or, j'aurai souhaité lister dans un fichier excel externe toutes les chaines de caractère d'une catégorie afin de gérer cette liste plus facilement.

A ton avis, est-il possible de contenir toutes les chaines de caractère dans la partie expression de Wildmatch ? peut-être avec une expansion $ ?

Wildmatch (s, expr1 [,expr2, ...exprN])

almamy_diaby
Creator
Creator

if(substringcount(Libellé, 'CARTE')>0,'CB',Libellé) as CATEGORIE,

Not applicable
Author

Ci-joint un exemple trouvé sur le net pour un "Wildmatch ApplyMap" :

table1:
MAPPING LOAD
match
,':' & description & ':' as description
INLINE [
match, description
LS01, team1
LS02, team2
LS03, team3
];

table2:
LOAD *
,rangeminstring('others',subfield(mapsubstring('table1',string),':',2)) as description
INLINE [
string, value
AALS01DD, 10
ABLS01EE, 20
ACLS02GG, 50
LLLS02EE, 10
RRLS03QQ, 50
TTLS05QQ, 10
];


Merci à JohnW


wildmatch and looping though table

View solution in original post

Not applicable
Author

Bonjour,

avec un an de retard je vous remercie pour votre réponse car j'ai fini par trouver le temps de terminer mon script et cela fonctionne parfaitement.

Un grand merci.

Note :

Attention au séparateur utilisé pour le subfield, j'ai eu un petit soucis car mes données contenaient le même séparateur donc ça prenait un peu n'importe quoi dans ma chaîne de caractère.

J'ai finalement mis un ; à la place du : dans le script.