Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
lmasson43
Contributor III
Contributor III

CA CUMULE

Bonjour à tous,

Je bloque sur un point et j'aimerai avoir votre avis.

Je cherche à avoir le CA cumulé par mois des douze derniers mois sur histogramme (par exemple):

Exemple pour:

- Juillet 2016: Chiffre d'affaires du 01/08/2015 au 31/07/2016

- Aout 2016: Chiffre d'affaires du 01/09/2015 au 31/08/2016

- Septembre 2016: Chiffre d'affaires du 01/11/2015 au 30/09/2016

etc.

Je ne sais pas si je dois passer par le script ou si une fonction peut marcher..

Merci de votre aide.

Cordialement,

6 Replies
rviel_dubo
Contributor III
Contributor III

Bonjour Loic,

Tu peux ajouter une expression comme celle-ci si tu as déjà établi un calendrier pour ton application

Sum({<MoisSeq = {">-12<0"}>} Ventes)

Voici un tutoriel pour créer un calendrier au besoin.

https://community.qlik.com/docs/DOC-4848

A+

Robert

rviel_dubo
Contributor III
Contributor III

Oops,

Désolé, j'ai passé outre si tu n'as pas de calendrier

Sum({<DateTransaction = {'>=$(=MonthStart(Today(),-12))<$(=MonthEnd(Today()))'}>} Ventes)

Ceci pourra d'aider.

A+

Robert

lmasson43
Contributor III
Contributor III
Author

Bonjour Robert,

Merci pour ta réponse mais je ne souhaite pas exactement cela...Dans un histogramme, je souhaite voir par mois, le CA cumulé des douze derniers mois donc pour

Juillet 2016: Chiffre d'affaires du 01/08/2015 au 31/07/2016

- Aout 2016: Chiffre d'affaires du 01/09/2015 au 31/08/2016

- Septembre 2016: Chiffre d'affaires du 01/11/2015 au 30/09/2016

etc.

Merci d'avance.

mikael_voisine
Contributor II
Contributor II

Bonjour Loic

Pour ton pb, je suis passé par le sript

rajoutes dans ton calendrier (si tu n'en n'a pas voir le lien de Robert) : date(TempDate,'YYYY-MM-DD') as Period1

puis

PeriodTbl:

LOAD date(fieldvalue('Period1',recno()),'YYYY-MM') as Period

AUTOGENERATE fieldvaluecount('Period1');

AsOfPeriodTable:

LOAD

Period as AsOfPeriod,

'Rolling 12' as PeriodType,

date(addmonths(Period,1-iterno()),'YYYYMM') as Period1,

Year(Period) as Year

RESIDENT PeriodTbl

WHILE iterno() <= 12;

inner join (AsOfPeriodTable)

LOAD Period as Period1

RESIDENT PeriodTbl;

Si tu veux des explications, regardes ce post, Jonh défini bien cette fonction

https://community.qlik.com/thread/29394

lmasson43
Contributor III
Contributor III
Author

Bonjour Mikael,

Merci pour ta réponse, elle m'a aidé mais j'ai encore un soucis.. En effet dans la table asofperiod, j'ai l'ensemble des jours (j'ai essayé de changer le format de ma date mais le résultat est identique).. voici mon script également.

SET ThousandSep=' ';

SET DecimalSep=',';

SET MoneyThousandSep=' ';

SET MoneyDecimalSep=',';

SET MoneyFormat='# ##0,00 €;-# ##0,00 €';

SET TimeFormat='hh:mm:ss';

SET DateFormat='DD/MM/YYYY';

SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';

SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';

SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';

SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';

SET FirstWeekDay=0;

SET BrokenWeeks=1;

SET ReferenceDay=0;

SET FirstMonthOfYear=1;

let vDateMin = num(makedate(2010,01,01));

let vDateMax = num(today()+365);

let vNbJours = num(vDateMax-vDateMin);

let vdateMytd=Timestamp((today()-1),'DD/MM/')&num(Year(today())-1);

SET CollationLocale='fr-FR';

PERIODE_FISCALE:

LOAD * INLINE [

    MIN, MAX, PERIODE

          01/07/2010, 30/06/2011, 2011

      01/07/2011, 30/06/2012, 2012

      01/07/2012, 30/06/2013, 2013

      01/07/2013, 30/06/2014, 2014

      01/07/2014, 30/06/2015, 2015

      01/07/2015, 30/06/2016, 2016

      01/07/2016, 30/06/2017, 2017];

CALENDRIER:

LOAD 

   Date($(vDateMin)+RecNo(),'DD/MM/YYYY') as Date,

   //Year($(vDateMin)+RecNo()) as [Fiscal Year],

   month($(vDateMin)+RecNo()) as [Mois_fiscal],

   num(Month($(vDateMin)+RecNo()))-3 as FiscalMonthNum,

   Day($(vDateMin)+RecNo()) as [Jour],

   'T'&ceil(month($(vDateMin)+RecNo())/3) as [Trimestre],

   Week(Date($(vDateMin)+RecNo())) as Semaine,

   WeekDay($(vDateMin)+RecNo()) as [Jour semaine],

   Date($(vDateMin)+RecNo(),'DD/MM/YYYY') as Period1

   AUTOGENERATE($(vNbJours));

LEFT Join

IntervalMatch(Date)

LOAD

MIN,

MAX

Resident PERIODE_FISCALE;

JOIN

LOAD *

Resident PERIODE_FISCALE;

DROP TABLE PERIODE_FISCALE;

PeriodTbl:

LOAD

date(fieldvalue('Period1',recno()),'DD/MM/YYYY') as Period

AUTOGENERATE fieldvaluecount('Period1');

AsOfPeriodTable:

LOAD

Period as AsOfPeriod,

'Rolling 12' as PeriodType,

date(addmonths(Period,1-iterno()),'DD/MM/YYYY') as Period1,

Year(Period) as Year

RESIDENT PeriodTbl

WHILE iterno() <= 12;

inner join (AsOfPeriodTable)

LOAD Period as Period1

RESIDENT PeriodTbl;

Sans titre.png

mikael_voisine
Contributor II
Contributor II

Bonjour

Si tu veux plutôt avoir les mois dans la table AsOfPeriod

au niveau de date(fieldvalue('Period1',recno()),'DD/MM/YYYY') as Period enlève les DD comme ça tu n'auras que les mois et les années

idem pour date(addmonths(Period,1-iterno()),'DD/MM/YYYY') as Period1,

Ensuite dans ton graph, tu met AsOfPeriod en dimension

Et en expression, ton calcul de CA cumulé

par ex (ajustes avec ton appli) :

sum({$<[Fiscal Year]=,PeriodType={'Rolling 12'},

AsOfPeriod={"<=$(=Date(Max(DATE),'YYYY-MM'))>=$(=Date(YearStart(Max(DATE),-1),'YYYY-MM'))"},[Mois_fiscal]=>}CA)

Pour info : ,PeriodType={'Rolling 12'} ne te sert pas. Je l'ai car dans mon appli j'ai des cumuls également sur 3 mois glissants et donc c'est pour les différencier