Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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,
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
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
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.
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
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;
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