Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 :
Je souhaiterai avoir uniquement la dernière valeur , c'est à dire le 20180923 avec une quantité de 4 199.
Merci d'avance
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
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
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) ?
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
Ah ok !! Je comprends mieux maintenant.
Vraiment merci beaucoup !!!!
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
Ç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
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 ?
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
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.
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;