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é.

jmialoundama
Contributor II

Récupérer uniquement Max valeurs

Bonjour,

J'ai le script suivant :

TMP_STOCK:

    load

      "Magasin - Code", 

      Max(Date("Cal - ID Jour",'YYYYMMDD'))as "Cal - ID Jour",

      Max(Date("Date Photo Stock magasin",'YYYYMMDD')) as "Last photo stock",

      sum(if("Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock"


    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=999

    and Date("Date Photo Stock magasin",'YYYYMMDD')< WeekEnd(today(),-1,0)


    Group by "Stock Magasin - Date Photo Stock",

            "Cal - ID Jour",

            "RCT - Code",

            "Saison - Code",

            "Magasin - Code"

Cependant dans mon application ce n'est pas uniquement la dernière valeur qui apparaît mais plusieurs valeurs :

Capture.JPG

Je souhaiterai avoir uniquement la dernière valeur , c'est à dire le 20180923 avec une quantité de 4 199.

Merci d'avance

1 Solution

Accepted Solutions
Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Voila le code exact que j'ai écris :

TMP_STOCK:

    load

    "Magasin - Code",

      Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=501

    and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    Group by "Magasin - Code";

         

Inner join(TMP_STOCK)

  LOAD

  "Magasin - Code",

  Date("Stock Magasin - Date Photo Stock",'YYYYMMDD') as "Last photo stock",

  sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD"

  from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

  where "Magasin - Code"=501

  and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

  Group by "Magasin - Code",

                    "Stock Magasin - Date Photo Stock";



C'est parfait !!!! Je récupére bien les quantité stock 20180923 !


Vraiment merci pour l'aide et pour l'aiguillage au niveau du code

View solution in original post

12 Replies
Highlighted

Re: Récupérer uniquement Max valeurs

Bonjour Juliana,

C'est parce que tu fais une somme en même temps que des max. C'est ici un problème de logique

Sépare tes LOAD :

- recherche le Max(Date("Date Photo Stock magasin",'YYYYMMDD')) as "Last photo stock" en fonction des group by souhaités

- puis fais un inner join avec le reste de tes champs

Ainsi tu ne remonteras que les données liées au max(Date Photo Stock magasin).

En espérant que ce soit suffisamment clair,

Regards,

Marina

Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Bonjour Marina,

Merci pour ton éclaircissement , étant donné que je débute dans les script Qlik Sense, je ne savais pas que ça fonctionnait de cette manière.

Donc j'aurais un code de ce style ? :

TMP_STOCK:

    load

       "Magasin - Code", 

       Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=501

    and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    Group by

            "Magasin - Code";

           

  Inner join(TMP_STOCK)

  LOAD

   sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD"

   from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

   where "Magasin - Code"=501

   and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0);

   



Je ne sais pas si il faut rajouter les clauses "WHERE" et "GROUP BY" dans le inner join (Je souhaiterai juste être éclairé au niveau du script) ?

Highlighted

Re: Récupérer uniquement Max valeurs

Presque :

TMP_STOCK:

    load

      "Magasin - Code",

      Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=501

    and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    Group by

            "Magasin - Code";

        

  Inner join(TMP_STOCK)

  LOAD

    "Magasin - Code",

    Date("Stock Magasin - Date Photo Stock",'YYYYMMDD') as "Last photo stock"

  sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD"

  from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

  ;

Il faut que ton inner join soit fait sur un ou des champs communs, ici "Magasin - Code", et "Last photo stock" pour qu'il ne récupère la somme de la quantité pour la max(Date).

Après si tu veux opérer cela sur tous les codes magasins tu n'as pas besoin de ta clause where dans ton premier LOAD.

En fait tout dépend fonctionnellement de ce que tu veux comme résultat.

Regards,

Marina

Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Ah ok !! Je comprends mieux maintenant.

Vraiment merci beaucoup !!!!

Highlighted

Re: Récupérer uniquement Max valeurs

Obtiens-tu ce que tu souhaites ?

Je t'encourage à regarder des articles sur les jointures Qlik, basées sur la même idée que les jointures SQL, la syntaxe est différente mais l'idée est la même

Bonne lecture, et bon apprentissage

Marina

Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Ça fonctionne comme je le souhaite cependant ça me fait une somme depuis 2018 alors que je souhaiterai récupérer uniquement la somme de la date suivante : 20180823 avec 49 1993 alors que là je récupéré la globalité qui est de 1 534 071

Highlighted

Re: Récupérer uniquement Max valeurs

As-tu exactement écris ce code ? :

TMP_STOCK:

    load

      "Magasin - Code",

      Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=501

    and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    Group by

            "Magasin - Code";

    

  Inner join(TMP_STOCK)

  LOAD

    "Magasin - Code",

    Date("Stock Magasin - Date Photo Stock",'YYYYMMDD') as "Last photo stock",

  sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD"

  from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    group by "Magasin - Code" , "Stock Magasin - Date Photo Stock";

Pour t'expliquer :

Ton premier LOAD récupère, pour le magasin 501, la max(date) qu'il trouve.

Ensuite, avec l'inner join, on ne va récupérer la Qté que pour le magasin 501 et la date 20180923.

Normalement en écrivant exactement le code donné, cela devrait fonctionner.

Obtiens-tu ce que tu veux avec cela ?

Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Voila le code exact que j'ai écris :

TMP_STOCK:

    load

    "Magasin - Code",

      Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where "Magasin - Code"=501

    and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    Group by "Magasin - Code";

         

Inner join(TMP_STOCK)

  LOAD

  "Magasin - Code",

  Date("Stock Magasin - Date Photo Stock",'YYYYMMDD') as "Last photo stock",

  sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD"

  from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

  where "Magasin - Code"=501

  and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

  Group by "Magasin - Code",

                    "Stock Magasin - Date Photo Stock";



C'est parfait !!!! Je récupére bien les quantité stock 20180923 !


Vraiment merci pour l'aide et pour l'aiguillage au niveau du code

View solution in original post

Highlighted
jmialoundama
Contributor II

Re: Récupérer uniquement Max valeurs

Bonjour Marina,

J'aurais une dernière question à vous poser par rapport au problème que j'ai eu hier.

J'ai ajouté deux nouveaux indicateurs et je suis repartie sur le code sur lequel vous m'aviez aiguillé.

Cependant j'ai encore le problème où j'ai toutes les dates qui sortent et non la dernière date.

Capture.JPG

Le code est le suivant (la question que je me pose c'est est-ce que le problème ne vient pas des inner join, c'est à dire la façon dont je les ai disposé dans le script?) :

TMP_STOCK:

Load * inline [temp];

Concatenate(TMP_STOCK)

    load  Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock",

         "RCT - Code",

         "Saison - Code",

         "Magasin - Code"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    And   "Magasin - Code"=501

    Group by "RCT - Code",

             "Saison - Code",

             "Magasin - Code";  

    concatenate(TMP_STOCK)

    load Max(Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock",

        "RCT - Code",

        "Saison - Code",

        "Magasin - Code"

    from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    where Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    And "Magasin - Code"=991 Or "Magasin - Code"=996

    group by "RCT - Code",

             "Saison - Code",

             "Magasin - Code";  

   

Concatenate(TMP_STOCK)

LOAD Max(Date("Stock Opt Magasin - Date Photo Stock",'YYYYMMDD')) as "Last photo stock",

    "RCT - Code",

    "Saison - Code",

    "Magasin - Code"

    FROM [$(PathQVD)/DWH\F_ODS_STOCKS_OPT_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

    Where Date("Stock Opt Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

    And "Magasin - Code"=501

    Group by "RCT - Code",

             "Saison - Code",

             "Magasin - Code";

            

Inner join(TMP_STOCK)

  LOAD

   Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')as "Last photo stock",

   sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock LOGVAD",

   sum(if("Stock Magasin - Code Compteur Stock"='M2',"Stock Magasin - Quantité en stock",0)) as "Qté stock Transit",

   sum(if("Stock Magasin - Code Compteur Stock"='M1' or "Stock Magasin - Code Compteur Stock"='M2',"Stock Magasin - Quantité en stock",0)) as "Qté stock magasins"

   from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

   where "Magasin - Code"=501

   and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

   Group by "Stock Magasin - Date Photo Stock";   

           

Inner join(TMP_STOCK)

  LOAD

   Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')as "Last photo stock",

   sum(if("Stock Magasin - Code Compteur Stock"='M1',"Stock Magasin - Quantité en stock",0)) as "Qté stock 996"

   from [$(PathQVD)/DWH\F_ODS_STOCKS_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

   where "Magasin - Code"=991 Or "Magasin - Code"=996

   and Date("Stock Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

   Group by "Stock Magasin - Date Photo Stock";

           

Inner join(TMP_STOCK)

LOAD

   Date("Stock Opt Magasin - Date Photo Stock",'YYYYMMDD') as "Last photo stock",

   Sum("Stock Opt Magasin - Quantité en stock") as "Stock optimal LOGVAD"

   from [$(PathQVD)/DWH\F_ODS_STOCKS_OPT_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)

   where "Magasin - Code"=501

   and Date("Stock Opt Magasin - Date Photo Stock",'YYYYMMDD')< WeekEnd(today(),-1,0)

   Group by "Stock Opt Magasin - Date Photo Stock";  


drop field temp;