Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
ab92
Creator II
Creator II

Condition de reload sur fichier Xl

Bonjour à tous,

Bonne année à tous dans un premier temps !

Je sollicite votre aide pour cette problématique : Mon fichier Excel ci dessous 

LOCATC_Reev
AA07AA12
AJ04AB02
AJ04AM05
AJ04AM02
AP01AB
AJ01FA01
AJ01FA02
AJ01FA03
AJ01FA06
AJ01FA07
AJ01FA09
AJ01FA15
BA07AA12
BJ01
BJ04AB02
BJ04AM05
BJ04AM02
BP01AB
CA07AA12
CJ01
CJ04AB02
CJ04AM05
CJ04AM02
CP01AB
DA07AA12
DJ01
DJ04AB02
DJ04AM05
DJ04AM02
DP01AB

 

Mon objectif:
Récupérer les données de la base en fonction de ces critères par localisation.

Pour ce faire j'ai réalisé une clé qui fonctionne : Location&'-'&Code_A

Mon problème :

J01 je dois récupérer sur la base la totalité des champs ayant 7 caractères qui commence par J01

Cependant pour d'autre localisation je dois récupérer des champs appartenant à J01 =

J01FA01
J01FA02
J01FA03
J01FA06
J01FA07
J01FA09
J01FA15


Avez vous une idée sur comment  solutionner ce problème svp ?

Je suis partis sur cela : if(CODE_ATC_tmp1>='J01' and CODE_ATC_tmp1 <='J02','J01',CODE_ATC_tmp1) as CODE_ATC_tmp2; 

J'aimerai par ailleurs marquer les résultats par un 1 pour tout simplement quand lors d'une sélection sur un champ avoir tout mes critères :

LOAD *,
pick(match(Flag_Prio_tmp,'1','-2','-3','-4'),'Prio A','Prio D','Prio C','Prio B') as Indic_Prio;

LOAD*,
(Flag_A_tmp)-(Flag_D_tmp)-(Flag_C_tmp)-(Flag_B_tmp) as Flag_Prio_tmp;

LOAD*,

if(Age>=75 and Loc= 'A',1,0) as Flag_A_tmp,
if(Age>=65 and Loc= 'D',2,0) as Flag_D_tmp,
if(Loc='C',3,0) as Flag_C_tmp,
if(Loc='B',4,0) as Flag_B_tmp;

Dans l'attente de votre réponse, excellente journée !
AB

1 Solution

Accepted Solutions
Taoufiq_Zarra

Bonjour,

Juste pour ajuster la formule, essayes ceci :

if((Match(LOC,'A') and match(ATC_Reev,'J01FA01','J01FA02','J01FA03','J01FA06','J01FA07','J01FA09','J01FA15')),'catégorie1',
if((LOC<>'A') and wildmatch(ATC_Reev,'J01*'),'catégorie2')) as CODE_ATC_tmp2

 

sinon si tu as d'autres explications à fournir,  on peut proposer autres choses

Regards,
Taoufiq ZARRA

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

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

View solution in original post

8 Replies
Taoufiq_Zarra

Bonjour,

Je ne sais pas pour les autres utilisateurs, mais j'ai pas bien compris la problématique , et le fichier source je pense que n'est pas complet ?

 

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

Bonjour Taoufik,

Tout d'abord merci pour ta réponse rapide. 

Ma problématique :

- Borner les champs de ma colonne 'ATC' sur les critères du fichier excel c'est à dire :

   Pour loc A (récupérer uniquement la liste de la colonne ATC= J01FA01 à J01FA15)

   Pour loc B, C et D ( récupérer toutes les données de la liste ATC commençant par J01)

 

Et pardonne moi pour mon scipt il est vrai que cela vous mettra en erreur étant donné que j'ai d'autre variable a intégrer, que je n'ai pas en plus expliqué.

 

Le script a corrigé est celui ci : comment trier les données pour ainsi récupérer deux variables différentes sur un même champs J01* et J01FA01 à J01FA15. En te remerciant d'avance pour ton aide !

LOAD*,

if(CODE_ATC_tmp1>='J01' and CODE_ATC_tmp1 <='J02','J01',CODE_ATC_tmp1) as CODE_ATC_tmp2;

Taoufiq_Zarra

Re bonjour,

😊j'ai pas encore compris ce que tu veux faire,

mais sur les deux points indiqués :

Pour loc A (récupérer uniquement la liste de la colonne ATC= J01FA01 à J01FA15)

Pour loc B, C et D ( récupérer toutes les données de la liste ATC commençant par J01)

j'ai compris que tu veux ajouter un nouveau champs CODE_ATC_tmp2 avec la condition loc A +ATC= J01FA01 à J01FA15 -> par exmeple catégorie1

sinon B, C et D+ ATC commençant par J01 > par exmeple catégorie2

je te propose le script :

if((Match(LOC,'A') and wildmatch(ATC_Reev,'J01FA*')),'catégorie1',
if((LOC<>'A') and wildmatch(ATC_Reev,'J01*'),'catégorie2')) as CODE_ATC_tmp2

 

sinon si c'est autre chose, re-explique le besoin avec des exemples c'est mieux

 

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

Taoufik,

En te remerciant déjà pour ton aide et encore de ta réactivité.

Ta réflexion est juste et il est vrai que sans ex cela est compliqué :

Tout d'abord laisse moi t'expliquer la finalité : Mon but final est de présenter à l'utilisateur un seul champ qui lui permettra ainsi de faire correspondre tous les critères par ex champ = LOC qui sélectionnera toutes les sous familles de codes ATC.

Ex : En cliquant sur Loc (le end-user) aura donc dans un champ les codes du champs codeATC (fichier Excel).

Fichier Excel : attention les codes ont deux catégories différentes  en fonction du nombre de caractère, le code J01 récupère toute la famille et  sur une seule localisation ='A' on me demande de bien sélectionner la famille J01FA01 à J01FA15).

Le problème qui se pose c'est qu'actuellement j'arrive pas a trier les données de la famille J01 qui à 7 caractères J01FA01 à J01FA15 :

if(ATC_Reev<='J01' and ATC_Reev>'J01',J01',ATC_Reev) as Cat_j01 // cette instruction me borne uniquement les familles pas les sous familles

En espérant être claire et en te remerciant encore pour ton aide ! 

AB

 

Isalview
Contributor
Contributor

Bonjour,

J'ai parcouru le sujet et il serait intéressant de poser au clair la situation, l'attendu et le cheminement à avoir car c'est un peu brouillon.

Tu peux passer par un mapping si tes données sont plus ou moins codifier de la même manière pour faire tes regroupement.

Pour la partie "trier" selon tes expressions et dimensions tu gardes le détail (un set analysis à la rigueur peut être inséré).

Cordialement

Isalview

ab92
Creator II
Creator II
Author

Je viens de tester ta solution : il manque une chose avec ton code j'obtiens :

la famille J01 = OK

Cependant je ne souhaite pas récupérer tous les champs J01FA* uniquement les classes :

J01FA01
J01FA02
J01FA03
J01FA06
J01FA07
J01FA09
J01FA15
 

En te remerciant pour ton aide

AB

Taoufiq_Zarra

Bonjour,

Juste pour ajuster la formule, essayes ceci :

if((Match(LOC,'A') and match(ATC_Reev,'J01FA01','J01FA02','J01FA03','J01FA06','J01FA07','J01FA09','J01FA15')),'catégorie1',
if((LOC<>'A') and wildmatch(ATC_Reev,'J01*'),'catégorie2')) as CODE_ATC_tmp2

 

sinon si tu as d'autres explications à fournir,  on peut proposer autres choses

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

Bonjour et merci pour ton aide j'avais essayé avec & ça marche également. 

Encore merci pour ton aide, j'ai d'autre question je vais essayé du coup de faire au plus simple pour la prochaine question mais il est vrai que cela n'est pas du tout évident quand il y a plusieurs condition à prendre.

Bonne journée à toi !

AB