Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Pour pouvoir faire des prévisions, j'ai besoin de calculer une somme qui se base sur la semaine courante et les 4 semaines récentes (5 semaines du coup). Mais je ne sais pas comment le faire sur Qlik Sense.
Je vous attache un screen shot d'Excel qui vous montre en gros la formule utilisée. (la somme des verts/ la somme des bleus)
Je pense aussi aux conditions aux limites (premières semaines).
j'ai pensé à RangeAvg mais je ne sais pas quoi mettre dans les arguments. J'a lu aussi fractile mais je sais pas non plus comment l'utiliser.
Merci d'avance.
Bonjour
Ton calcul doit apparaitre dans un KPI ou un tableau ? comme sur ton exemple Excel ?
Sinon dans ton tableau essaye ceci :
rangesum(above(MP7,0,5)) / rangesum(above(VOL7,0,5))
Bruno
Partons du principe que tu créés un champ comme ceci dans ton script ; week(TA_DATE) as SEMAINE_DATA
La formule devrait ressembler à quelque chose comme :
=Sum({<SEMAINE_DATA={">=$(=week(today())-4)"}*{"<=$(=week(today))"}>}MP7)
Kevin
Si tu veux faire un tableau avec les semaines en dimension alors l'expression donnera plutôt quelque chose comme :
=Sum({<SEMAINE_DATA={">=$(=Semaine_calendrier-4)"}*{"<=$(=Semaine_calendrier)"}>}MP7)
Il te faudra intégrer un calendrier dans le script.
Tu utiliseras le champ Semaine_calendrier en dimension (et non pas SEMAINE_DATA)
Exemple de calendrier :
// Calendrier
LET vDateMin = Floor(YearStart(AddYears(today(),-2)));
LET vDateMax = Floor(YearEnd(today()));
CalendrierTemp:
LOAD
Date($(vDateMin) + RowNo() - 1) AS Date_Ref
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendrier:
LOAD Year(Date_Ref)*10000 + Month(Date_Ref)* 100 + Day(Date_Ref) as Period_id,
Date(Date_Ref) as Date_Ref,
Num(Month(Date_Ref)) as Mois,
Month(Date_Ref) as Mois_Lib,
Year(Date_Ref) as Annee,
Week(Date_Ref) as Semaine_calendrier,
'T'&Ceil(Month(Date_Ref)/3) as Trimestre,
'S'&Ceil(Month(Date_Ref)/6) as Semestre,
Year(Date_Ref)&Num(Month(Date_Ref),'00') as Période,
Num(Month(Date_Ref),'00')&'/'&Year(Date_Ref) as MMYYYY,
AutoNumber(Year(Date_Ref)&Num(Month(Date_Ref),'00')) as Seq_Période,
if(Date_Ref=floor(MonthEnd(Date_Ref)),1,0) as FDM
Resident CalendrierTemp
order by Date_Ref;
DROP TABLE CalendrierTemp;
Salut kevin, merci pour ta réponse, mais j'avoue que pendant tout le week end j'essaie d'appliquer ce que tu dis, alors que je ne comprends pas en fait la signification, est ce que j'ai besoin de créer un nouveau champs de semaines? Parce que j'en ai déjà un, et c'est celui que j'utilise pour calculer d'autres mesures et faire les visualisations, il est importé de ma base de donnée.
Je précise donc:
Mon champs est déjà crée, il s'appelle Week et contient comme valeurs: 2017W01, 2017W02 ... 2017W28
Ce que je veux faire en fait c'est:
Calculer, pour chaque semaine 'x' de ce champs Week la quantité suivante:
1 - [ ( Somme des 'MP1' sur les semaines de "x-4" à "x" ) / ( Somme des 'MP2' sur les semaines de "x-4" à "x" ) ].
Bonjour
Ton calcul doit apparaitre dans un KPI ou un tableau ? comme sur ton exemple Excel ?
Sinon dans ton tableau essaye ceci :
rangesum(above(MP7,0,5)) / rangesum(above(VOL7,0,5))
Bruno
Salut Bruno, merci pour ta reponse, je me suis basé sur cette expression pour le resoudre.
1- ((RangeAvg(above(Sum([Nb MP 7 days]),0,5))) / (RangeAvg(above(Sum([Nb WOL 7 days]),0,5))))
Merci beao
Bonjour
Parfait ... Attention Rangesum et above nécessite que le tableau soit classé par numéro de semaine croissant.
puisque above prend la valeur immédiatement au dessus de la ligne considérée.
Attention donc du coup au sélection si par exemple tu sélectionnes les semaines 4 10 16 22 et la semaine en cours , le calcule se fait sur les semaines sélectionnées et non sur les x-4 semaines de chaque sélection.
Bonne continuation,
Bruno