8 Replies Latest reply: Apr 2, 2013 4:24 AM by Aude BAUDINO RSS

    Group by pour organiser mes données ?

      Bonjour à tous,

       

      Débutante sur QlikView j'aurais besoin d'aide sur le point suivant :

       

      J'ai une table dont la structure est :

       

      TimeTag1Tag2
      110-
      1-30
      220-
      2-40

       

       

      Je voudrais obtenir :

       

      TimeTag1Tag2
      11030
      22040

       

      Après avoir retourné le problème dans tous les sens, j'en arrive à la conclusion qu'il faudrait :

       

                   1. Que je remplace les "-" par des 0

      TimeTag1Tag2
      1100
      1030
      2200
      2040

       

                  2. Que je me débrouille de faire une sorte de group by(Time) dans cette table en agrégeant sur

      - sum(Tag1)

      - sum(Tag2) (je n'ai jamais 2 valeurs de tag pour un même Time donc OK)

      - sum(Tag1) + sum(Tag2)

       

      Cela vous semble-t-il possible ? (j'espère que oui sinon tout mon projet est à revoir ... )

      Mille mercis pour vos réponses.

       

      Aude

        • Re: Group by pour organiser mes données ?
          christian juillard

          Bonjour,

           

          il suffit de faire un join entre

          T1:

          noconcatenate

          LOAD Time, Tag1 Resident T

          join

          LOAD Time, Tag2 Resident T

           

          chris

            • Re: Group by pour organiser mes données ?

              Bonjour Christian,

               

              Merci pour cette réponse (ultra) rapide qui m'aide bien (et me redonne espoir d'arriver au bout ...).

              Maintenant j'ai :

               

              Resultat.bmp

              Il ne me reste plus qu'à trouver un moyen de ne garder que la ligne par Time qui m'intéresse. Si vous avez des idées c'est très volontier ...

                • Re: Group by pour organiser mes données ?
                  christian juillard

                  Bonjour

                   

                  il semble qu'il y ait un pb.

                  Selon les sources décrites en entrée le résultat devrait être correct avec 1 record Tag1 et Tag2 par Time et non celui présenté qui est multiple.

                  Puis-je avoir les sources?

                   

                  christian

                    • Re: Group by pour organiser mes données ?

                      J'ai testé avec ce code :

                       

                      Test :
                      LOAD * INLINE [
                          tps, T1, T2
                          10, 111, 0 
                          20, 222, 0 
                          30, 333, 0 
                          10, 0 , 444
                          20, 0 , 555
                          30, 0 , 666
                      ]
                      ;


                      Test3 :
                      noconcatenate
                      LOAD tps as Time, T1 as Tag1  Resident Test; // WHERE Isnull(T1)=0;
                      join
                      LOAD tps as Time, T2 as Tag2 Resident Test;

                       

                       

                      et le même sans les zéros. J'ai la même chose dans les 2 cas à affichage du zéro près..

                      • Re: Group by pour organiser mes données ?

                        J'ai testé avec ce code :

                         

                        Test :
                        LOAD * INLINE [
                            tps, T1, T2
                            10, 111, 0 
                            20, 222, 0 
                            30, 333, 0 
                            10, 0 , 444
                            20, 0 , 555
                            30, 0 , 666
                        ]
                        ;


                        Test3 :
                        noconcatenate
                        LOAD tps as Time, T1 as Tag1  Resident Test; // WHERE Isnull(T1)=0;
                        join
                        LOAD tps as Time, T2 as Tag2 Resident Test;

                         

                         

                        et le même sans les zéros. J'ai la même chose dans les 2 cas à affichage du zéro près..

                        • Re: Group by pour organiser mes données ?

                          Christian et Bobbyraj_sg,

                           

                          Grâce à vos 2 réponses ça marche, merci beaucoup à tous les 2 !!!

                          J'ai plutôt chargé les données à partir d'excel pour simuler mes "-".

                          Au final le code correct est :

                           

                          Test :
                          LOAD tps as Time,
                               T1,
                               T2
                          FROM
                          [C:\Documents and Settings\aude.baudino\Desktop\QlikView\CDL\Resol_pb.xls]
                          (biff, embedded labels, table is [Feuil1$]);

                           


                          Test3 :
                          noconcatenate
                          LOAD Time, T1 as Tag1  Resident Test WHERE Isnull(T1)=0;
                          join
                          LOAD Time, T2 as Tag2 Resident Test WHERE Isnull(T2)=0;

                           

                           

                           

                          Merci beaucoup pour votre réactivité à tous les 2. Vous m'avez bien aidé !!

                      • Re: Group by pour organiser mes données ?

                        Bonjour Christian,

                         

                        Merci pour cette réponse (ultra) rapide qui m'aide bien (et me redonne espoir d'arriver au bout ...).

                        Maintenant j'ai :

                         

                        Resultat.bmp

                        Il ne me reste plus qu'à trouver un moyen de ne garder que la ligne par Time qui m'intéresse. Si vous avez des idées c'est très volontier ...

                      • Re: Group by pour organiser mes données ?
                        bobbyraj santhiogu

                        Salut,

                         

                        Ne remplace pas les '-' par des '0'.

                        Il suffit de faire un join pour obtenir le résultat que tu cherches.

                         

                        Soit Tab_tmp ta table initiale avec la structure que tu indique, alors fais:

                         

                        Tab_tmp:

                        LOAD

                        Time,

                        Tag1,

                        Tag2,

                        Rowno() as Ligne // pense à rajouter cette table pour différencier celle-ci de la table resultat que tu auras

                        From

                             // ta source

                         

                         

                        Tab:

                        LOAD

                             Time,

                             Tag1

                        Resident

                             Tab_tmp

                        Where     Isnull(Tag1)=0 // condition a mettre si tu ne veux charger que lorsque Tag1 est non null

                        ;

                         

                        JOIN

                        (Tab)

                        LOAD

                             Time,

                             Tag2

                        Resident

                             Tab_tmp

                        Where     Isnull(Tag2)=0 // condition a mettre si tu ne veux charger que lorsque Tag2 est non null

                        ;

                         

                        DROP TABLE Tab_tmp;