Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

script associés plusieur table en une seule

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.

2 Replies
Anonymous
Not applicable
Author

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

cje
Employee
Employee

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