8 Replies Latest reply: Jul 12, 2016 3:47 AM by Fk Fisher RSS

    Exclure des champs dès le chargement

    Fk Fisher

      Bonjour,

       

      Je progresse doucement sur Qlik Sense mais je ne reste malheureusement qu'un mécanicien et non un informaticien ;-(

      Enfin !! J'ai vient de construire une application à partir d'un fichier Excel avec un grand nombre de colonne. Parmi les colonnes, il en existe plusieurs qui ont la même structure du nom de colonne.

       

      Pour aller plus loin dans l'exploitation de mon fichier j'ai besoin de modifier encore peu mon script en incluant des conditions sur le nom des colonnes. En clair je voudrais savoir comment transcrire dans mon script les éléments suivant :

       

      - Créer en début de script une variable VAR1 en fonction de la date du jour de chargement : VAR1=(Date_du_jour - 7)

      - Charger normalement toutes les colonnes de mon fichier qui ont un nom de colonne finissant par VAR1

      - Assembler dans un même champs [AUTRESEM] toutes les colonnes dont le nom de colonne ne finit pas par VAR1

       

      Sauriez vous m'aider ?

      Merci d'avance

      Franck

        • Re: Exclure des champs dès le chargement
          luc Derosne

          bonjour

          avec un exemple de fichier, ou une simulation, et une idée du résultat attendu, peut être

          ;-)

            • Re: Exclure des champs dès le chargement
              Fk Fisher

              Merci,

               

              Je vais essayer d'éclaircir mon sujet :

               

              Ma table ressemble à cela :

               

              et mon script à cela

              [Feuil1]:

              LOAD

              Left(Subfield(Filebasename(),'_',4),2) as VAR02,

              [Mesure],

              [Départ.],

              [Code],

              [22/05],

              [25/05],

              [01/06],

              [02/06],

              [03/06],

              [04/06],

              [05/06],

              [06/06],

              [07/06],

              [02/07],

              [05/07],

              [Forme],

              [Capit]

              FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]

              (ooxml, embedded labels, table is Feuil1);

               

              Dans l'exemple ci-dessus,

              - je souhaiterais créer une variable VAR01 qui serait le résultat de la soustraction de VAR02-1 soit (VAR01=06).

              - je souhaiterais charger normalement les champs [Mesure],[Départ.],[Code],Forme],[Capit]

              - je souhaiterais charger normalement et séparément les champs dont les deux derniers chiffres sont égal à la valeur de ma variable VAR01. Donc tous les champs du type [*/VAR01] soit [*/06]

              - je voudrais charger les autres champs  [22/05],[25/05], [02/07],[05/07] sous un même et unique champs dont le nom serait [AUTRESEM].

               

              Voilà j'espère que j'ai réussi à être clair ?

                • Re: Exclure des champs dès le chargement
                  luc Derosne

                  le nombre  de semaines [jj/mm] est donc variable entre 2 fichiers ?

                  et donc le nombre de colonne dans le load aussi.

                  faut ruser, pour  que la semaine [jj/MM]  deviennent une occurence d'une dimension semaine, et ensuite pouvoir qualifier chaque ligne d'une dumension TypeSemaine, avec des occurences "a traiter" ou "AutresSemaine".

                  ou alors faire un load sur un nombre de champs variable, mais çà me parait plus compliqué

                  ;-)

                    • Re: Exclure des champs dès le chargement
                      Fk Fisher

                      Merci beaucoup,

                       

                      Le nombre de colonne est effectivement variable en fonction des fichiers sources d'où mon souhait de passer par le script plutôt que par des filtres sur des n° de semaine qui n'en sont pas !

                       

                      Je comprends votre réponse mais je préférerais rester sur du script conditionnel. Je suis persuadé qu'il est possible d'écrire en format informatique Qlik :

                       

                      "Charger les champs A, B et C et charger tous les champs qui finissent par "/VAR01"

                      Assembler tous les champs (type crosstable) qui ne finissent pas par "/VAR01" dans le champs AUTRESEM"

                       

                       

                      Maintenant je dois avouer être incapable de transformer cette phrase en langage Qlik ....

                       

                      Connaissez vous  quelque un qui peut m'aider ?

                        • Re: Exclure des champs dès le chargement
                          luc Derosne

                          bonjour

                          Mais pourquoi vouloir que les éléments [jjmm] soit des dimensions, alors que çà ressemble plutôt à des occurences d'une dimension [jour-mois].

                          et vous allez gérer comment le fait d'avoir un nombre différent d'enregistrement à chargement ?

                           

                          LD

                            • Re: Exclure des champs dès le chargement
                              Fk Fisher

                              Bonjour,

                               

                              En effet, c'est sans doute un problème !!!

                               

                              Cependant je ne sais pas comment faire autrement. Que proposez-vous?

                               

                              A chaque dimension [jjj/mm] j'ai plusieurs centaine de ligne de données associées que je dois comparer à un autre fichier qui lui est différent puisque j'ai une dimension [DATE_RAPPORT] !!!

                               

                              Je vois avec vos questions que je n'ai pas été assez loin sur ma problématique peut-être ???

                               

                              Mon problème aujourd'hui est que j'ai une fonction Crosstable qui me transforme toutes mes dimensions après [Code] en une seule dimension [QTECHARGE]. Mais comme vous le constatez, à chaque fichier mensuel, après la dimension [Code] j'ai un bout du mois précédent et avant la dimension  [Forme] j'ai un bout du mois suivant. Donc quand j'analyse une dimension [jj/mm] je peux l'avoir deux fois. Une fois dans le fichier du mois étudié et une fois dans le fichier du mois précédent  ou suivant ????

                              D'où mes questions pour ne pas charger les dimensions [jj/mm] qui sont différentes du mois étudié !

                        • Re: Exclure des champs dès le chargement
                          Almamy DIABY

                          Bonjour,

                          Je pense que le code ci-dessous va t'aider.  Essaie de bien gérer les variables Date_jour_deb et Date_jour_fin

                           

                          let Date_jour_deb = date(today()-7,'DD/MM/YYYY');

                          let Date_jour_fin = date(today(),'DD/MM/YYYY');

                          set  Errormode=0;

                           

                          For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'   

                          let Jour= left(date('$(Date_jour)'),5);         

                          [Feuil1]:            

                            LOAD           

                              [Mesure],          

                              [Départ.],            

                              [Code],             

                              [Forme],         

                              [Capit],         

                             [$(Jour)] as [AUTRESEM],           

                              '$(Jour)' as Jour           

                            FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx] 

                                     (ooxml, embedded labels, table is Feuil1);

                          Next

                           

                            • Re: Exclure des champs dès le chargement
                              Fk Fisher

                              GENIAL !!!!

                               

                              Merci beaucoup, c'est exactement ce que je cherchais, je n'avais pas pensé à la fonction FOR....Next !

                              BRAVO

                               

                              Si je peux me permettre une autre question complémentaire....

                               

                              Il s'agirait de paramétrer la date de début et la date de fin en fonction du nom du fichier. En effet le nom de fichier contient le n° de mois étudié donc je pensais pouvoir le récupérer et donc paramétrer la Date_jour_deb et Date_jour_fin avec ce paramètre mais ce que j'ai écrit ne fonctionne pas !! Sauriez vous me dire où est mon erreur ?

                              Encore merci

                               

                              let MoisFichier = Left(Subfield(Filebasename(),'_',4),2);

                              let VAR01='01/' & (MoisFichier) & '/2016';

                              let VAR02='31/' & (MoisFichier) & '/2016';

                              let Date_jour_deb = date#(VAR01,'DD/MM/YYYY');

                              let Date_jour_fin = date#(VAR02,'DD/MM/YYYY');

                              set  Errormode=0;

                               

                              For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

                              let Jour= left(date('$(Date_jour)'),5);        

                               

                              [Feuil1]:      

                                LOAD

                               

                                  [Mesure],       

                                  [Départ.],           

                                  [Code],            

                                  [Forme],        

                                  [Capit],        

                                 [$(Jour)] as AUTRESEM,          

                                  '$(Jour)' as Jour          

                                FROM [lib://Desktop/Reprise_Qlik_121_06.xlsx]

                                (ooxml, embedded labels, table is Feuil1);

                               

                              Next