3 Replies Latest reply: May 3, 2017 11:33 AM by Cheenu Janakiram RSS

    For each

    Bertrand Lantuéjoul

      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,

        • Re: For each
          Cheenu Janakiram

          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.

            • Re: For each
              Bertrand Lantuéjoul

              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.

            • Re: For each
              Cheenu Janakiram

              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