10 Replies Latest reply: Nov 13, 2015 6:33 AM by Florent Lelarge-Otiniano RSS

    Variation de données par trimestre

    Christophe DELAFOY

      Bonjour,

       

      Je dois intégrer tous les trimestres un fichier identique dont les données sont les suivantes :

      I have to integrate all quarters the same file in which the data are :

       

      Fichier 1er trimestre

      Nom

      Compteur

      BOGOTA

      82778

      HELSINKI

      79950

      GEORGETOWN

      18585

      TUNIS

      6955

      Fichier 2ème trimestre

      Nom

      Compteur

      BOGOTA

      135558

      HELSINKI

      92155

      GEORGETOWN

      25479

      TUNIS

      12974

      Fichier 3ème trimestre

      Nom

      Compteur

      BOGOTA

      163155

      HELSINKI

      101071

      GEORGETOWN

      29937

      TUNIS

      14099

       

      Comment faire en sorte d’avoir non pas le cumul mais simplement la variation en données comme cela :

      How to have, not accumulated data, but simply the data variation like this :

       

      Fichier 1er trimestre

      Nom

      Compteur

      BOGOTA

      82778

      HELSINKI

      79950

      GEORGETOWN

      18585

      TUNIS

      6955

      Fichier 2ème trimestre

      Nom

      Compteur

      BOGOTA

      52780

      HELSINKI

      12205

      GEORGETOWN

      6894

      TUNIS

      6019

      Fichier 3ème trimestre

      Nom

      Compteur

      BOGOTA

      27597

      HELSINKI

      8916

      GEORGETOWN

      4458

      TUNIS

      1125

       

      L’objectif étant de pouvoir faire des graphiques d’évolution trimestrielle du compteur.

      The objective is to be able to make graphics quarterly evolution of the counter.


      Merci. Thanks

       

      Christophe

        • Re: Variation de données par trimestre
          Florent Lelarge-Otiniano

          Bonjour Christophe,

           

          si j(ai bien compris, tu as 1 fichier excel par trimestre et tu souhaites suivre l'évolution.

          à ta place, je nommerai chaque colonne "compteur" par le trimestre (ex "T1_2015", "T2_2015"...) puis je chargerai les fichier en faisant une clé sur le champ nom .

          ATTENTION : pour éviter les boucles, 1 fichier doit être le fichier unique contenant toutes les clés des autres fichiers.

          par ex : fichier 1 contient "Nom',"CléT2", "CléT3", "CléT4", "T1_2015" (Les Clés étant la duplication de la colonne "Nom")

                      Ficher 2 contient "CléT2","T2_2015"

                      etc...

           

          du coup, Qlikview de fera une table avec :

          Nom/T1_2015/T2_2015... !

          et tu pourras faire tes calculs d'évolution...

          ex :

          Capture.PNG

          je te joins les fichiers que j'ai utilisé...

            • Re: Variation de données par trimestre
              Christophe DELAFOY

              Merci pour ta réponse.

              Seulement, mes fichiers ne se cantonnent pas seulement à 2 colonnes ce serait trop simple (c'était pour l'exemple), il y en a en fait 160... Certes, toutes ne sont pas utiles, j'en conserve 50. Y-aurait-il la possibilité de renommer les champs de manière automatique via le script chaque trimestre.

              Sinon, j'avais imaginé qu'à partir du script, on aurait pu automatiser ce calcul (de variation) et ainsi obtenir une nouvelle série avec les données unitaires trimestrielles... c'est possible ?

              Merci

              Christophe

                • Re: Variation de données par trimestre
                  Florent Lelarge-Otiniano

                  C'est un autre problème...

                  Je ne vois pas très bien comment sont structurées tes données au départ...

                  s'il s'agit de plusieurs onglets au sein d'un même fichier, il y a une demande qui est flaguée "résolue" ici :

                  aide script pour import de plusieurs onglet excell concernant des périodes hebdomadaires

                  peut être cela répond à ton problème

                  s'il y a différents fichiers excel, je ne sais pas si tu peux les charger autrement que 1 à 1 et à renommer les différents champs en fonction de tes besoins...

                   

                  Après, une fois ce pb de chargement résolu, tu peux bien entendu faire un load imbriqué et faire tes calculs dans le script...

                    • Re: Variation de données par trimestre
                      Christophe DELAFOY

                      voici un extrait d'un des fichiers source trimestriel

                       

                      Christophe

                        • Re: Variation de données par trimestre
                          bruno bertels

                          Bonjour Christophe,

                           

                          Je vois que ton exemple de fichier fonctionne bien avec un principe d'onglets par trimestre.

                           

                          Aussi la piste de Florent et le lien qu'il donne devrait t'aider. C'est moi qui avait posté cette question "importation de plusieurs onglets Excel".  Mon problème étant de pouvoir importer des onglets Excel de semaines mois et trimestres qui s'ajoutent automatiquement suivant le moment où on fait l'import. De pouvoir distinguer ces onglets par type semaine trimestre mois ajouter un champ de date à la base ( week month quarter). Xavier Retaillaud m'a apporté la solution avec le script ci dessous que tu peux adapter à ton cas :

                           

                           

                          LIB CONNECT TO 'Excel Files zzz';

                           

                            XlsInfo:

                            SQLTables;

                            DISCONNECT;

                            let var=NoOfRows('XlsInfo');

                           

                            // Pour chaque feuille du classeur

                            FOR i = 0 to $(var)-1

                            // sheetName = nom de la feuille

                              let sheetName=subfield(peek('TABLE_NAME', i,'XlsInfo'),'$',1);

                           

                              // weekNb = numéro de la semaine

                              let weekNb=floor(replace(Upper(sheetName),'S',''));

                           

                              // si la feuille commence par S suivi d'un nombre compris entre 1 et 53

                              IF upper(left(sheetName,1))='S' and weekNb>=1 and weekNb<=53 then


                                // alors on charge toute la table et on rajoute une colonne semaine avec notre variable issue du nom de la feuille en valeur

                                MyTable:

                                LOAD *, $(weekNb) as Semaine

                                FROM [lib://Desktop/zzz.xlsx](ooxml, embedded labels, table is '$(sheetName)');

                           

                              END IF

                           

                          NEXT i

                           

                          DROP Table XlsInfo

                           

                          Ça marche très bien pour moi n'hésites pas si besoin.

                           

                          Bruno

                            • Re: Variation de données par trimestre
                              Florent Lelarge-Otiniano

                              bonjour Christophe, bonjour et merci à Bruno,

                               

                              en voyant ton fichier, il me semble que les données qui t'intéressent sont celles-cio :

                              Capture.PNG

                              je pense que la formule de Bruno peut fonctionner...

                              Si tu as autant de fichier excel que tu as de mise à jour, tu peux utiliser un fichier .vbs tel que celui que j'utilise pour concaténer des fichiers txt que je reçois quotidiennement.

                              Capture2.PNG

                              cela me génère un fichier concaténé qui reprend tous les Txt qu'il trouve. Ensuite tu pourrais te baser sur les dates "modifié le" pour faire tes calculs d'évolution...

                              Qu'en penses- tu ?

                              • Re: Variation de données par trimestre
                                Florent Lelarge-Otiniano

                                ne t'inquiète pas, ce vbs est compliqué car les fichiers sources en txt sont variables, donc il a fallu les structurer...

                                • Re: Variation de données par trimestre
                                  Christophe DELAFOY

                                  Merci pour ce script.

                                  Lorsque j'importe le fichier excel en odbc, ma table TABLE_NAME contient bien mes différents onglets mais en rajoutant un $ à la fin -> '2015_T1$' ou '2015_T2$' ou '2015_T3$'.

                                  Du coup, lorsque j'exécute la suite


                                  FOR i = 0 to $(var)-1

                                    let sheetName = subfield(peek('TABLE_NAME', i,'Donnees'),';',1);

                                   

                                  $(sheetName):

                                    LOAD * FROM [Chemin\2015.xlsx](ooxml, embedded labels, table is $(sheetName)); -> ici, il ne reconnaît pas cet onglet puisqu'il n'y a pas de $ dans le fichier d'origine ot TABLE_NAME en génère un...

                                  Comment faire pour que ce sigle soit retiré dans les champs de TABLE_NAME ?

                                  Merci

                                    • Re: Variation de données par trimestre
                                      bruno bertels

                                      Bonjour

                                       

                                      Remplace ceci :

                                        let sheetName = subfield(peek('TABLE_NAME', i,'Donnees'),';',1);

                                       

                                      par  ceci :

                                      let sheetName=subfield(peek('TABLE_NAME', i,'Donnees'),'$',1);

                                      ce qui devrait t'enlever le signe $ enfin je crois que ça marche comme çà , j'ai une connaissance très approximative des scripts.

                                       

                                      Bruno

                                        • Re: Variation de données par trimestre
                                          Florent Lelarge-Otiniano

                                          bonjour Christophe, bonjour Bruno,

                                           

                                          il me semble que c'est bien ce script avec le "$"  (let sheetName=subfield(peek('TABLE_NAME', i,'Donnees'),'$',1);) qui était utilisé dans la demande originelle.

                                           

                                          la réponse de Bruno me paraît juste.

                                           

                                          Essaie et tiens nous au courant !

                                          (je ne connais pas le script de connection ODBC sur fichier excel : tous mes fichiers générés automatiquement sont stockés sur un serveur auquel j'accède comme un simple DDur...)

                                           

                                          Florent.