2 Replies Latest reply: Mar 1, 2018 12:55 PM by Christophe JOUVE RSS

    script associés plusieur table en une seule

    Denis BEHAGUE

      Bonjour je travail sous Qlik sense cloud, et je rencontre des difficultés avec la conception d'un script, tout d'abord je vais vous montrer des extraits de mes tables pour vous expliquez ce que je voudrais faire.

       

      J'ai à ma disposition plusieurs tables,

       

      J'ai une table Projet qui contient des code de projets et leur informations ( un projet correspond à un client en quelque sorte)

            

      CDE_PROJLIB_PROJLOGO_PROJ
      1LECLERCleclercl.png
      2CARREFOURcarrefour.png
      3Hyper U

      hyperu.png

       

      Ensuite j'ai une table Site qui contient tous les sites de chaque projet, par exemple :

      CDE_PROJCDE_SITELIB_SITE
      11leclerc Paris
      12Leclerc Marseille
      23carrefour paris
      34hyper u Paris
      35Hyper u Marseille

       

      en faite mes projets corresponde à des clients et la table site représente leur site existant, et ensuite je me retrouve avec de nombreuses tables différentes, dans le cadres de notre activités on effectue des chantiers sur leur site et donc nous avons des tables concernant les différentes étape du site, par exemple nous avons une table devis qui contient le numéros du projet, du site pour un numéro d'étape et toutes les informations nécessaire à cette étape. Autre exemple nous avec une table Expedition avec les étapes et informations nécessaire concernant les expéditions. voici un exemple

       

      table Devis :

      CDE_PROJCDE_SITECDE_ETPINFO 1INFO 2INFO n
      112939xxxyyyzzz
      232939xxxyyyzzz
      352939xxxyyyzzz

      Table Expedition :

       

      CDE_PROJCDE_SITECDE_ETPInfo 1Info 2Info n
      112960xxxyyyzzz
      112970xxxyyyzzz
      232960xxxyyyzzz
      232970xxxyyyzzz

       

      Parfois il y plusieurs étapes différentes pour le même site dans la même table.

       

      Donc ce que j'aimerais obtenir c'est de crée une table par projet, par exemple la table projet 1 qui contiendras tous les sites du projet 1 ainsi que toutes les étapes du site comme ceci :

      Table Projet 1

      CDE_SITECDE_ETP1Info1_1Info1_2Info1_3CDE_ETP2Info2_1Info2_2Info2_3CDE_ETP 3Info3_1Info3_2Info3_3
      12939xxxyyyzzz2960xxxyyyzzz2970xxxyyyzzz
      22939xxxyyyzzz2960xxxyyyzzz2970xxxyyyzzz

      Entre CDE_SITE et CDE_ETP1 je placerais les informations du site mais je voulais pas mettre un tableau trop grand dans ma question

       

      Voila une idée de ce que je cherche à obtenir mais j'ai encore un peu de mal avec les script et je ne sais pas trop comment m'y prendre, donc si vous pourriez m'aider et m'orienter pour réaliser cette table cela m'aiderais beaucoup.

        • Re: script associés plusieur table en une seule
          Denis BEHAGUE

          Pour le moment j'ai essayé quelque truc avec Left Join et cela fonctionne quand je met ma table Site en première puis Devis mais pas quand j'utilise Expédition je suppose que c'est car celle-ci a différentes étapes et donc le cde_site apparaît plusieurs fois donc à la seconde étape d'un site elle ne peut pas le remettre puisque des colonnes portant les mêmes noms ont déjà étaient générées.

           

          J'aimerais pouvoir renommé mes colonnes comme ceci si possible  par exemple pour le site 1  pour l'étape 2970 info 1 s'appellera dans ma nouvelle table 2970 - info 1 et quand on arrivera sur l'étape 2960 il générera 2960 - info 1 , mais je ne sais pas si c'est possible et je n'arrive pas à le faire

          • Re: script associés plusieur table en une seule
            Christophe JOUVE

            Bonsoir Denis,

            Plusieurs remarques :

             

               

            •   Quand tu penses Qlik, tu dois penser champ et non table. Si tu veux au final voir dans Qlik tous les champs de toutes les tables comme des entités distinctes (exemple sur les champs INFO dans expéditions et devis), tous tes champs doivent avoir des noms distincts et uniques pour TOUTES les tables du modèle cible dans Qlik;

               

            •   La liaison entre les tables du modèle Qlik se fera automatiquement pour des noms de champs identiques entre les tables de ta source. Pas la peine de forcer la création de jointures. Une liaison parfaite entre deux tables du modèle Qlik se fait sur UN SEUL et UNIQUE champ ;

               

            •   En conséquence, si plusieurs tables ont plusieurs champs identiques, Qlik va essayer de créer automatiquement une association entre tous les champs ayant le même nom sous la forme de clés synthétiques, ce qui va complexifier ton modèle cible et le rendre illisible (cf. règle précédente).

               

            •   Le tableau final que tu veux obtenir correspond à une transposition inverse (transformation de lignes en colonnes, pas simple à réaliser en Qlik). Par défaut, on fait très bien l’inverse, donc des transformations de colonnes en lignes.

               

            •   Le rendu final de ton tableau deviendra très vite illisible si tu as de nombreuses colonnes

            Pour t’en sortir en Qlik, tu dois donc :

             

               

            •   Créer un modèle te permettant de faire des ponts (associations) entre les tables sans avoir besoin de créer des jointures à gauche ou à droite (ça c’est un raisonnement relationnel, pas nécessaire en Qlik par défaut, même si on sait le faire). Si tes tables ont besoin de plusieurs colonnes pour créer cette association (par exemple ici CDE_PROJ et CDE_SITE), on crée un champ supplémentaire qui est la concaténation des deux et on ne garde dans les tables que ce champ

               

            •   considérer que ta transposition inverse n’est pas forcément le meilleur moyen de représenter ton information avec Qlik. L’utilisation de l’associativité permet aisément de t’en sortir.

            Appli exemple jointe à ce mail. Attention : réalisée en version Feb 2018 de Sense.

             

            Cdt

             

            Christophe Jouve

             

             

            The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.

            De : Denis BEHAGUE

            Envoyé : jeudi 1 mars 2018 18:02

            À : Christophe Jouve <Christophe.Jouve@qlik.com>

            Objet :  - script associés plusieur table en une seule