3 Replies Latest reply: Apr 23, 2013 11:25 AM by Richard Pressanti RSS

    Fusionner 2 tableaux

      bonjour,

       

      J'essaie de faire un travail sur qlikview qui me pose une bonne colle:

       

      j'ai actuellement 2 tableaux sur un document qlikview, venant de 2 bases de données: en colonnes des années (ANNEE1 et ANNEE2), en ligne des SIREN (SIREN1 pour un tableau, SIREN2 pour l'autre) . Et je somme des prestations (PREST1 pour le premier tableau et PRESTA2 pour l'autre)

       

      Les 2 bases de données ont des noms de champ totalement différents et des champs en plus ou en moins  (je fais des sélections différentes dessus), je ne veux pas unifier les notations

       

      Je voudrais savoir s'il y a un moyen de réunir les tableaux en un seul: c'est à dire d'afficher dans une seule case (PRESTA1+PRESTA2) quand SIREN1=SIREN2 et ANNEE1=ANNEE2, et  par exemple si SIREN1 existe et pas SIREN2 pour une année,afficher PRESTA1.

       

      Je ne sais pas du tout si c'est possible.

       

       

      Dans tout les cas, je vous remercie d'avance.

       

      Cordialement,

       

      Philippe

        • Re: Fusionner 2 tableaux
          Richard Pressanti

          La somme n'est en elle-même pas dificile à faire. Le gros problème est plutôt d'avoir des dimensions communes (année et siren) aux deux tableaux.

           

          Pour cela, il vous faut modifier le script en ajoutant:

           

          année:

          NoConcatenate

          LOAD

               FieldValue('ANNEE1' , IterNo() ) as ANNEE ,

               FieldValue('ANNEE1' , IterNo() ) as ANNEE1 ,

          AUTOGENERATE FieldValueCount( 'ANNEE1' ) ;

           

          OUTER JOIN(année)

          LOAD

               FieldValue('ANNEE2' , IterNo() ) as ANNEE ,

               FieldValue('ANNEE2' , IterNo() ) as ANNEE2

          AUTOGENERATE FieldValueCount( 'ANNEE2' ) ;

           

          SIREN:

          NoConcatenate

          LOAD

               FieldValue('SIREN1' , IterNo() ) as SIREN ,

               FieldValue('SIREN1' , IterNo() ) as SIREN1

          AUTOGENERATE FieldValueCount( 'SIREN1' ) ;

           

          OUTER JOIN( SIREN )

          LOAD

               FieldValue('SIREN2' , IterNo() ) as SIREN ,

               FieldValue('SIREN2' , IterNo() ) as SIREN2

          AUTOGENERATE FieldValueCount( 'SIREN2' ) ;

           

           

          Il ne reste plus qu'à construire un tableau ayant pour dimension ANNEE et SIREN et ayant pour expressions

           

          <PRESTA1> + <PRESTA2>

           

            • Re: Fusionner 2 tableaux

              Merci pour la réponse rapide

               

               

              année:

              NoConcatenate

              LOAD

                   FieldValue('ANNEE1' , IterNo() ) as ANNEE ,

                   FieldValue('ANNEE1' , IterNo() ) as ANNEE1 ,

              AUTOGENERATE FieldValueCount( 'ANNEE1' ) ;

               

              OUTER JOIN(année)

              LOAD

                   FieldValue('ANNEE2' , IterNo() ) as ANNEE ,

                   FieldValue('ANNEE2' , IterNo() ) as ANNEE2

              AUTOGENERATE FieldValueCount( 'ANNEE2' ) ;

               

              SIREN:

              NoConcatenate

              LOAD

                   FieldValue('SIREN1' , IterNo() ) as SIREN ,

                   FieldValue('SIREN1' , IterNo() ) as SIREN1

              AUTOGENERATE FieldValueCount( 'SIREN1' ) ;

               

              OUTER JOIN( SIREN )

              LOAD

                   FieldValue('SIREN2' , IterNo() ) as SIREN ,

                   FieldValue('SIREN2' , IterNo() ) as SIREN2

              AUTOGENERATE FieldValueCount( 'SIREN2' ) ;

               

              cette partie doit etre située à la fin du code? ou au contraire, je dois mettre cela à l'interieur des LOAD déjà présents? désolé je débute dans l'édition de script

               

               

               

              mon code est comme ca:

               

              LOAD

              PRESTA1,

              ANNEE1,

              SIREN1,

              CONTRAT

              FROM

              [X:\....1];

               

               

              LOAD

              PRESTA2,

              ANNEE2,

              SIREN2,

              CODE

              FROM

              [X:\....2];

               

               

              merci beaucoup

                • Re: Fusionner 2 tableaux
                  Richard Pressanti

                  Il vous faut le rajouter en fin de script: c'est du code de mise en forme de la structure des tables qui est donc à opérer après le chargement "brut".

                   

                  En revanche, il vaut mieux nommer vos différentes tables, ce qui donne:

                   

                  Fact_table_1 :

                  NoConcatenate

                  LOAD

                  PRESTA1,

                  ANNEE1,

                  SIREN1,

                  CONTRAT

                  FROM

                  [X:\....1];

                   

                   

                  Fact_table_2 :

                  Noconcatenate

                  LOAD

                  PRESTA2,

                  ANNEE2,

                  SIREN2,

                  CODE

                  FROM

                  [X:\....2];

                   

                   

                  + Rajouter, en fin de fichier, le code précédemment fourni.

                   

                   

                  Cordialement.