Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
juliana_mia
Contributor II

Jointures : Inner join / Left join script qlik sense

Bonjour,

J'essaye de faire un inner  join, cependant je penses que ma sytaxe est fausse.


J'ai une table "Calendrier" et une table de "Fait".


Je souhaite récupérer le jour de la table de la table de "Fait" .


Sachant que  CA TTC Net vient de la table de fait


Voici mon script :

Fait_CMD:

*

// FROM [lib:/Fait.QVD](qvd)

            

Inner join(CALENDRIER)

//Création du chiffre d'affaire de l'année courante N

Load

"Cal - Jour",

Sum("CA TTC Net") As "Web - CA TTC Net N"

        Resident F_STOCK_CMD_WEB ;

       Where "Cal - Année" = $(vCurrentYear)

        Or "Cal - Année" = $(vPastYear);

Inner Join(CALENDRIER)

//Création du chiffre d'affaire de l'année précédente

Load

"Stock Jour"+364 as "Stock Jour",

Sum("CA TTC Net") As "Web - CA TTC Net N-1"

    Resident F_STOCK_CMD_WEB

    /Where "Cal - Année" = $(vPastYear)

       or "Cal - Année" = $(vPastYear2);


L'erreur que j'ai est la suivante :

La colonne "Cal - Jour" n'existe pas, alors que cette colonne provient de la table "Calendrier".

Merci d'avance

       


1 Solution

Accepted Solutions
YoussefBelloum
Esteemed Contributor

Re: Jointures : Inner join / Left join script qlik sense

soit tu utilise une concatenation soit une jointure, les 2 ne marcheront pas ensembles..

je t'invite a lire cet article: Understanding Join, Keep and Concatenate

8 Replies
YoussefBelloum
Esteemed Contributor

Re: Inner join script qlik sense

Bonjour,

1. pour faire une jointure sur une table, il faut que la table soit préalablement chargée

2. quand on utilise des fonction d'aggregation dans un LOAD, un Group by est obligatoire, il doit inclure tous les autres champs qui ne sont pas utilisés dans des fonctions d'aggrégation.

3. tu peux enlever tout le bloc de la 2eme jointure en rassemblant tes conditions WHERE dans le premier WHERE

juliana_mia
Contributor II

Re: Inner join script qlik sense

Bonjour Youssef,

Merci pour tes éclaircissements.

J'aurais une autre information à demander.

Quand on utiliser un "left join" ou un "Inner join" dans le script de chargement est-ce que la jointure s'applique à tous les éléments qui seront effectués à la suite de cette jointure ou faut-il à chaque fois rajouter une jointure;

Ex : J'ai ce code , je mets un left join au début, sauf que je charge deux d'affilé une même table pour créer des indicateurs différents, et je souhaiterai savoir il fallait rajouter un left join lorsque je charge une seconde, ou, un simple left join au début du script s'applique pour tous les éléments :

Left join

//Création du chiffre d'affaire de l'année courante N

Load

"Cal - ID Jour"

        FROM [lib://QVD_Rec (omnium_dec1)/DWH\D_CALENDRIER.QVD](qvd)

  Where left (("Cal - ID Jour"),4) = $(vCurrentYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear2);

FACT_WEB :

Load

    "Cal - ID Jour",

    "RCT - Code" As "Fact- Web RCT Code",

        "Web - CA TTC Net" As "Web - CA Commandé N",

       "Web - Quantité Produit" As " Web - Qauntité commandée N"

Resident F_STOCK_CMD_WEB

Where left (("Cal - ID Jour"),4) =$(vCurrentYear)

        Or left (("Cal - ID Jour"),4) = $(vPastYear);

    

Concatenate

// Création du chiffre d'affaire de l'année précédente

Load

    "Cal - ID Jour",

    "RCT - Code" As "Fact- Web RCT Code",

       "Web - CA TTC Net" As "Web - CA Commandé N-1",

        "Web - Quantité Produit" As " Web - Qauntité commandée N-1"

Resident F_STOCK_CMD_WEB

Where left (("Cal - ID Jour"),4) = $(vPastYear)

        Or left (("Cal - ID Jour"),4) = $(vPastYear2)

       

YoussefBelloum
Esteemed Contributor

Re: Inner join script qlik sense

Bonjour,

non justement, quand on utilise une jointure, on cherche a joindre (sur une table précédemment chargée) des colonnes de la table qu'on est entrain de charger, les lignes gardés dépendent du type de jointure utilisée (inner, left, right...), donc on affecte seulement la table sur laquelle on est entrain de faire la jointure.

juliana_mia
Contributor II

Re: Inner join script qlik sense

Ok donc ça signifie que  dans mon cas , au niveau de mon code je dois rajouter une left join supplémentaire comme ceci ?:

Left join

//Création du chiffre d'affaire de l'année courante N

Load

"Cal - ID Jour"

        FROM [lib://QVD_Rec (omnium_dec1)/DWH\D_CALENDRIER.QVD](qvd)

  Where left (("Cal - ID Jour"),4) = $(vCurrentYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear2);

FACT_WEB :

Load

    "Cal - ID Jour",

    "RCT - Code" As "Fact- Web RCT Code",

        "Web - CA TTC Net" As "Web - CA Commandé N",

       "Web - Quantité Produit" As " Web - Qauntité commandée N"

Resident F_STOCK_CMD_WEB

Where left (("Cal - ID Jour"),4) =$(vCurrentYear)

        Or left (("Cal - ID Jour"),4) = $(vPastYear);

   

Concatenate

Left join

//Création du chiffre d'affaire de l'année courante N

Load

"Cal - ID Jour"

        FROM [lib://QVD_Rec (omnium_dec1)/DWH\D_CALENDRIER.QVD](qvd)

  Where left (("Cal - ID Jour"),4) = $(vCurrentYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear)

Or Left (("Cal - ID Jour"),4) = $(vPastYear2);

// Création du chiffre d'affaire de l'année précédente

Load

    "Cal - ID Jour",

    "RCT - Code" As "Fact- Web RCT Code",

       "Web - CA TTC Net" As "Web - CA Commandé N-1",

        "Web - Quantité Produit" As " Web - Qauntité commandée N-1"

Resident F_STOCK_CMD_WEB

Where left (("Cal - ID Jour"),4) = $(vPastYear)

        Or left (("Cal - ID Jour"),4) = $(vPastYear2)

      

YoussefBelloum
Esteemed Contributor

Re: Jointures : Inner join / Left join script qlik sense

normalement oui, a chaque fois que tu veux rajouter des champs différents, tu devra utiliser un load précédé d'une jointure

YoussefBelloum
Esteemed Contributor

Re: Jointures : Inner join / Left join script qlik sense

soit tu utilise une concatenation soit une jointure, les 2 ne marcheront pas ensembles..

je t'invite a lire cet article: Understanding Join, Keep and Concatenate

juliana_mia
Contributor II

Re: Jointures : Inner join / Left join script qlik sense

Ok merci beaucoup pour les informations et l'article

YoussefBelloum
Esteemed Contributor

Re: Jointures : Inner join / Left join script qlik sense

avec plaisir

essaye de faire des exercices avec le jeu de données de l'article et essaye toutes les jointures, le keep et la concatenation, tout sera beaucoup plus clair pour toi