Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
dmap_jacky
Contributor III
Contributor III

Set Analysis une mesure qui calcul entre deux dates

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)

11 Replies
dmap_jacky
Contributor III
Contributor III
Author

Bonjour Christophe,

Une amélioration forte avec l'utilisation du  flag =1 sur la table des objectifs et en présentation la formule

Sum({<FlagVte= {1}>} ObjectifJour)

Le résultat est imparfait, il exclue les objectifs des dates  sans ventes inclus dans la période ( ici  <08/06/2018).

Il me faut  trouver la bonne formule dans le load qui permet de faire le marquage avec la date de la dernière ventes.

voici lmon  Script Load

// Création d'une table temporaire comportant l'ensemble des champs objectif


Objectifs_temps :
LOAD
    num(Date_d) as DateN_Obj,
    Date_d as Date_Obj,
    ZoneQlik as Zone_Obj,
    BriqueQlik as Brique_Obj,
    ZoneQlik & '|' & BriqueQlik & '|' & num(Date_d) as KeyBase,    
    Money(ObjectifJour,'# ##0, €') as ObjectifJour
   
FROM [lib://SourcesXLS/Objectif.xlsx]
(ooxml, embedded labels, table is Requête6);


inner join (Objectifs_temps)

//Jointure pour préparation du marquage des ventes (Flag)

Ventes_Tmp :
LOAD
    num(Date_detail) as DateN_Vte,
    Date_detail as Date_Vte,
    ZoneQlik as Zone_Vte,
    BriqueQlik as Brique_Vte,
    ZoneQlik & '|' & BriqueQlik & '|' & num(Date_detail) as KeyBase,
     Money(Vte,'# ##0, €') as Vte
   
FROM [lib://SourcesXLS/Ventes.xlsx]
(ooxml, embedded labels, table is Requête5);


NOCONCATENATE

// mise en place du marqeur dans la table resultat qui est la table Objectifs initiale
//à laquelle l'on ajoute les ventes par jointure

Resultat:
LOAD
    num(Date_d) as DateN_Obj,
    Date_d as Date_Obj,
    ZoneQlik as Zone_Obj,
    BriqueQlik as Brique_Obj,
    ZoneQlik & '|' & BriqueQlik & '|' & num(Date_d) as KeyBase,    
    Money(ObjectifJour,'# ##0, €') as ObjectifJour
   
FROM [lib://SourcesXLS/Objectif.xlsx]
(ooxml, embedded labels, table is Requête6);

left Join

Objectifs_temps :
LOAD
//     DateN_Obj,
//     Date_Obj,
//     Zone_Obj,
//     Brique_Obj,
    KeyBase,
    1 as FlagVte         //ajout du marqueur
//     ObjectifJour
   
resident Objectifs_temps;

Drop Table Objectifs_temps;


left join

Ventes :
LOAD
    num(Date_detail) as DateN_Vte,
    Date_detail as Date_Vte,
    ZoneQlik as Zone_Vte,
    BriqueQlik as Brique_Vte,
    ZoneQlik & '|' & BriqueQlik & '|' & num(Date_detail) as KeyBase,
     Money(Vte,'# ##0, €') as Vte
   
FROM [lib://SourcesXLS/Ventes.xlsx]
(ooxml, embedded labels, table is Requête5);

dmap_jacky
Contributor III
Contributor III
Author

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