Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

For each

Bonjour,

Je cherche à simplifier mon code et dans ce contexte, je ne parviens pas à utiliser correctement un for each.

Voici ce que j'ai au départ:

LOAD

  *,

  Date(Date#(DATECREATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de création],

  Date(Date#(DATEMISEENINSTANCE, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de mise en instance],

  Date(Date#(DATEANNULATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date d'annulation],

  Date(Date#(DATEREFUS, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de refus],

  Date(Date#(DATEVALIDATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de validation],

  Date(Date#(DATEMISEAJOUR, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de mise à jour];

J'aimerai traiter ces lignes par un for each mais je n'y parviens pas. J'ai essayé de définir dans un premier temps des listes de valeurs de variables, mais j'ai l'impression que ça ne fonctionne par et que c'est pas une liste qui est crée.

SET DateList = DATECREATION, DATEANNULATION, DATEMISEAJOUR, DATEMISEENINSTANCE, DATEREFUS, DATEVALIDATION;

SET DateList_Alias = [Date de création], [Date de mise en instance], [Date d'annulation], [Date de refus], [Date de validation], [Date de mise à jour];

M'aideriez-vous à implémenter cette boucle svp ?

Cordialement,

3 Replies
cheenu_janakira
Creator III
Creator III

Je ne suis pas 100% sure de ce que tu essaye de faire avec la "boucle" et ton script, mais ton SET doit etre entre guimets, tel SET DateList = 'DATECREATION, DATEANNULATION, DATEMISEAJOUR, DATEMISEENINSTANCE, DATEREFUS, DATEVALIDATION';


Un SET doit etre entre 2 guimets et un LET est une evaluation d'une formule/expression.


Est-ce que tu peut donner plus d'info sur "J'aimerai traiter ces lignes pas un for each mais je n'y parviens pas.", je ne suis pas sure de comprendre ceci.

Cordialement.

Not applicable
Author

Pour être plus clair, J'aimerai arrivé à une syntaxe dans ce genre:

SET i=0;

FOR EACH Date_Item IN DateList

  LOAD Date(Date#($(Date_Item), 'YYYY-MM-DD'), 'DD/MM/YYYY')  as '$(DateList_Alias[0])';

  i=$(i)+1;

NEXT Date_Item;

Bien sûr cette syntaxe est mauvaise mais c'est juste pour illustré ce que je voudrais.

cheenu_janakira
Creator III
Creator III

Je comprends vraiment pas pourquoi tu veut faire ceci, tu va finir avec 6 tables differentes et sans une "foreign/primary" key. Dans un data model Qlik tu va avoir un cle synthetique, mais bon. Je crois que ce que tu cherche est dans les environs de:

SET DateList = 'DATECREATION', 'DATEANNULATION', 'DATEMISEAJOUR', 'DATEMISEENINSTANCE', 'DATEREFUS', 'DATEVALIDATION';

FOR EACH DateList in $(DateList)

$(DateList):

LOAD

  *,

  $(DateList)

FROM TableDeDonnees;

NEXT DateList;

Mais si "etoile" inclus le champ, cela ne marchera jamais. Qlik, au contraire de SQL, necessite que chaque nom de champ dans une table soit unique.

Enleve l'etoile pour voir ce qui ce passe.

Cordialement