Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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
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...
Bonjour,
Si Left() ne convient pas tu peux essayer avec WildMatch()
Cordialement,
Xavier.
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])
if(substringcount(Libellé, 'CARTE')>0,'CB',Libellé) as CATEGORIE,
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
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.