Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Moyennes mobiles, semaines glissantes

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.

1 Solution

Accepted Solutions
brunobertels
Master
Master

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

View solution in original post

6 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

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

kevinchevrier
Partner - Creator III
Partner - Creator III

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;

Not applicable
Author

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"  )  ].

moyenne glissante.JPG

brunobertels
Master
Master

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

Not applicable
Author

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

brunobertels
Master
Master

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