Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour
Ma difficulté est d'avoir une mesure qui calcul la somme de l'objectif sur la période de vente
Soit deux tables
T_Obj les champs sont date_Obj , Obj_jour / Objectif journalier du trimestre
T_Vte les champs sont date_Vte , Vente_jour / Ventes journalier du début du trimestre à une date dans le trimestre
J'ai tenté cette solution infructeuse
Sum({<date_Obj= {"<$(Max(Date_vte))"> } Obj_jour)
Mes remerciements à Christophe
La solution sans avoir recours au set Analysis est de passer par un flag avec une conversion de la date en numérique.
Soit
//Ventes contient les ventes du début de l'année à la date du jour
Ventes :
LOAD
Date_detail as Date_Vte,
num( Date_detail) as DateN_Vte,
ZoneQlik as Zone_Vte,
BriqueQlik as Brique_Vte,
ZoneQlik & '|' & BriqueQlik & '|' & Date_detail as KeyBase,
Money(Vte,'# ##0, €') as Vte
FROM [lib://SourcesXLS/Ventes.xlsx]
(ooxml, embedded labels, table is Requête5);
//variable Date en nombre
Date_Temp:
LOAD
Max(DateN_Vte) as MaxDate
Resident Ventes;
Let vMaxDateVente = num(Peek('MaxDate'));
Drop Table Date_Temp;
Right Join //la jointure permet d'éliminer les ventes avant le 1er avril
// la table objectifs contient les objectifs du T2
Objectifs :
LOAD
num(Date_d) as Date_Obj,
ZoneQlik as Zone_Obj,
BriqueQlik as Brique_Obj,
ZoneQlik & '|' & BriqueQlik & '|' & Date_d as KeyBase,
// permet le marquage des objectifs de la période de vente du trimestre
if(num(Date_d) <= $(vMaxDateVente),1,0) as Flag_Obj,
Money(ObjectifJour,'# ##0, €') as ObjectifJour
FROM [lib://SourcesXLS/Objectif.xlsx]
(ooxml, embedded labels, table is Requête6);
-------------------------------------------------------------------------------
Pour le set Analysis, je vais tester une formule en travaillant sur le numérique de la date, en reprenant la proposition de Sunny Talwar
May be try this
Sum({<date_Obj= {"<$(=Max(Date_vte))"}>} Obj_jour)
I have a value but it's not good, ce n'est pas bon
j'obtiens la somme de l'objectif complet
Explication
Avec toutes les dates de ventes dans les deux variables j'ai 64.102 k€
Sans sélection de date
Je devrais avoir 105.806k€ et 64.102k€ soit l'objectif du trimestre et l'objectif sur période des ventes
How about this
Sum({<date_Obj= {"<$(=Date(Max(Date_vte), 'DD/MM/YYYY'))"}>} Obj_jour)
Le résultat reste à 105.806k€.
la modification proposée est de forcer le format de la date.
Comment écrire directement la date. mais deux essais
Sum({<$date_Obj ={"<=07/08/2018"}>} Obj_Jour) ou
Sum({<$date_Obj ={"<=#07/08/2018#"}>} Obj_Jour) donne toujours le résultat de 105.806k€
Sorry it's not good. I have 105.806k€
the proposed change is to force the format of the date
How to write a formula with the date? My two test
Sum({<$date_Obj ={"<=07/08/2018"}>} Obj_Jour) or Sum({<$date_Obj ={"<=#07/08/2018#"}>} Obj_Jour) it's not good i have 105.806k€.
Bonjour,
Si j'ai bien compris, tu veux calculer l'objectif dont les dates sont inférieures ou égales à la date de vente. Soit, montrer un objectif au fur et à mesure que l'on avance dans le temps.
Pour cela, une solution assez simple est de mettre un flag dans le script sur le champs date_Obj.
//Tu charges ta table des ventes
Ventes:
LOAD Date_vte,
...
from ... ;
//Tu stocke la date max dans une variable depuis ta table
Date_Temp:
LOAD Max(Date_vte) as MaxDate
Resident Ventes;
// Tu la récupère dans une variable
Let vMaxDateVente = Peek('MaxDate');
// Tu charge la table objectif (sans doute en la concaténant aux ventes pour avoir une table de fait ?) :
concatenate(Ventes)
LOAD date_Obj,
Obj_jour,
// Tu ajoutes un champs Flag_Obj en fonction de la date
if(date_Obj <= '$(vMaxDateVente )',1,0) as Flag_Obj ,
...
From ... ;
Dans ta mesure, tu fais simplement :
Sum({$<Flag_Obj = {1}>}Obj_jour)
Sinon, j'essairai le set analysis suivant :
Sum({$<date_Obj= {"<=$(=Date(Max({$<Vente_jour = {">0"}>}Date_vte)))"}>}Obj_jour)
Bonjour Christophe,
Et merci d'avoir regardé ma question.
Oui j'ai besoin d'avoir l'objectif de la période vente pour calculer une prévision par ObjectifpériodeVte/Objectif
Je n'ai pas fait de concatenate entre les deux tables.
J'ai crée une clé commune qui permet d'avoir une liaison.
En ce qui concerne ta proposition de formule , n' exige-t-elle pas d'avoir des ventes tous les jours d'objectifs.
Dans mes sources, il y a des objectifs sans vente et des ventes sans objectifs.
Comme je ne suis pas parvenue à joindre dans ce post mon exemple,
j'ai posté de nouveau ma question avec un zip joint (deux fichiers excel, le script de load et la présentation Sense)
Je vais creuser l'idée du flag. J'avais précédemment via le gestionnaire de QlikSense utiliser une table avec un champ Objectif vente du jour tous cela préalablement fait sous Access (très simple).
Pour ajouter un champ qui ce calcul via une autre table, c'est l'option mapping du load qui faut utiliser?
Je viens d'essayer la partie flag en prenant ma base école.
(deux fichiers excel).
Le résultat est un flag toujours à 0
Ventes :
LOAD
Date_detail as Date_Vte,
ZoneQlik as Zone_Vte,
BriqueQlik as Brique_Vte,
ZoneQlik & '|' & BriqueQlik & '|' & Date_detail as KeyBase,
Money(Vte,'# ##0, €') as Vte
FROM [lib://SourcesXLS/Ventes.xlsx]
(ooxml, embedded labels, table is Requête5);
Date_Temp:
LOAD Max(Date_Vte) as MaxDate
Resident Ventes;
// Tu la récupère dans une variable
Let vMaxDateVente = Peek('MaxDate',0,Date_Temp);
Concatenate (Ventes)
Objectifs :
LOAD
Date_d as Date_Obj,
ZoneQlik as Zone_Obj,
BriqueQlik as Brique_Obj,
ZoneQlik & '|' & BriqueQlik & '|' & Date_d as KeyBase,
if(Date_d <= '$(vMaxDateVente )',1,0) as Flag_Obj,
Money(ObjectifJour,'# ##0, €') as ObjectifJour
FROM [lib://SourcesXLS/Objectif.xlsx]
(ooxml, embedded labels, table is Requête6);
Drop Table Date_Temp
bonjour,
dans la v ariable il faut écrire :
Let vMaxDateVente = Peek('MaxDate',0,'Date_Temp');
Tu peux aussi simplement mettre :
Let vMaxDateVente = Peek('MaxDate');
Les paramètre 2 et 3 de Peek sont optionnels, et le champs MaxDate n'existe que dans une seule table, avec une seule ligne, donc pas de risque d'erreur.
Pour controler pourquoi le flag est à 0, examine le contenu de la variable aussi
Merci Christophe pour l'usage de l'instruction Peek.
La Table Date_Temp indique MaxDate =43258 et Date_Vte 01/01/2018
Un problème de format? Max convertir en nombre?
J'ai vérifié mes données dates dans la partie ventes et objectifs
le format est celui d'une date.
J'ai tenté de mettre les champs date _Obj et MaxDate en numerique en mettant num()
soit le code
Ventes :
LOAD
Date_detail as Date_Vte,
ZoneQlik as Zone_Vte,
BriqueQlik as Brique_Vte,
ZoneQlik & '|' & BriqueQlik & '|' & Date_detail as KeyBase,
Money(Vte,'# ##0, €') as Vte
FROM [lib://SourcesXLS/Ventes.xlsx]
(ooxml, embedded labels, table is Requête5);
Date_Temp:
LOAD Max(Date_Vte) as MaxDate
Resident Ventes;
// Tu la récupère dans une variable
Let vMaxDateVente = num(Peek('MaxDate'));
Trace $(vMaxDateVente);
Concatenate (Ventes)
Objectifs :
LOAD
num(Date_d) as Date_Obj,
ZoneQlik as Zone_Obj,
BriqueQlik as Brique_Obj,
ZoneQlik & '|' & BriqueQlik & '|' & Date_d as KeyBase,
if(Date_d <= '$(vMaxDateVente )',1,0) as Flag_Obj,
Money(ObjectifJour,'# ##0, €') as ObjectifJour
FROM [lib://SourcesXLS/Objectif.xlsx]
(ooxml, embedded labels, table is Requête6);
// Drop Table Date_Temp
Résultat infructueux
Si je remplace dans le if la variable par la valeur
if(Date_d <= '43258',1,0) as Flag_Obj,
le marquage de 1 et o s'effectue parfaitement.
Le trace me permet de lire le contenue de la variable vMaxDateVente = 43258
Vraiment je ne comprends pas pourquoi avec la variable je ne parviens à mettre le flag.
Ci-joint ma première version