Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Recherche de mot-clé dans un champ texte et en fonction du résultat insertion d'une valeur dans un autre champ

Bonjour,

Je but sur le problème suivant depuis quelques jours, et je ne vois pas comment le résoudre. Je vais essayer d'être le plus clair possible afin que vous me donniez votre avis s'il vous plait.

J'ai deux tables :

     - table DOSSIER avec comme champs DOSSIER_ID, DOSSIER_INFO, .... Le champ DOSSIER_INFO contient des textes du type "problème urgent à résoudre pour telle date"

     - table KEYWORDS avec les champs KEYWORD_ID, KEYWORD (par exemple: urgent), KEYWORD_VAL

Ce que je souhaite pouvoir :

1) Au chargement de la table DOSSIER, pour chaque dossier, vérifier s'il y a des infos complémentaires (DOSSIER_INFO non vide)

2) Si oui, parcourir les infos complémentaires

3) Si dans les infos complémentaires il y a un mot clé (KEYWORD) référencé dans la table KEYWORDS, alors ajouter un champ KEYWORD_ID à la table DOSSIER et y affecter la valeur correspondante

4) Si pas de mot clé dans les infos complémentaires affecter la valeur 0 au champ KEYWORD_ID de la table dossier

Est-ce envisageable?

Si oui, comment procéder?

Merci par avance,

N'hésitez pas à me demander des précisions si je n'ai pas été assez clair.

14 Replies
rlp
Creator
Creator

C'est logique car vous n'avez pas copié toute l'expression.

wildmatch prend en argument uen chaîne et uen suite de motifs et renvoie le numéro du premier motif matchant s'il y en a un, Null() sinon

La chaîne matching_expression prend en charge la correspondance de la chaîne DOSSIER_INFO avec les motifs génrés par KEYWORD mais, si rien ne matche, elle renvoie Null(). C'est pour cela que j'ai rajoputé un motif '*' qui s'unifie avec toute chaîne de sorte que wildmatch renvoie un nombre. Il ne reste plus qu'à rajouter la valeur 0 dansle pick, après return_expression d'où le code à modifier en gras:

pick( wildmatch( CASE_ADDITIONAL_INFO , $(matching_expression) , '*' ), $(return_expression) , 0 ) as KEYWORD_ID

Not applicable
Author

Merci Amand,

Cela fonctionne aussi, et en plus ça m'a permis de voir l'utilisation des flags.

Je conserve la solution de Richard qui est plus proche de ce que j'avais déjà écrit.

Merci encore,

Jérôme

Not applicable
Author

Effectivement mon oubli du 0 en fin d'expression était la raison du problème.

Un grand merci à vous Richard pour la qualité et la rapidité de vos réponses!

amauryviseo
Partner - Contributor II
Partner - Contributor II

Petite précision Richard, wildmatch renvoie 0 si aucun motif ne matche...Et non pas null()

Pour gérer les motifs qui ne matchent pas une alternative au '*' est une expression du style

pick(wildmatch(motif1, motif2,...,motifn)+1, defaultvalue, valuemotif1,....,valuemotifn)

Le principe reste le même

Amaury Moreau
Senior BI Consultant - Qlik Expert
rlp
Creator
Creator

Exact, je me suis mélangé les pinceaux entre Wildmatch seul et la combinaison pick( wildmatch( _ ) , _ )