Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
m_m_fr
Contributor III
Contributor III

Calcul d'une moyenne (ignorer sélection)

Bonjour à tous,

J'ai l'objectif de calculer la moyenne de dossiers reçus sur les 10 dernières semaines, à partir de la date de fin de la sélection (max(Date)).

Mes filtres sont les suivants : ANNÉE, MOIS, SEMAINE

Exemple : Si je sélectionne le mois d'août, je souhaite afficher la moyenne des dossiers reçus depuis les 10 dernières semaines à partir du 31 août inclus.

Voici ma formule sur les 21 derniers jours :

avg({1<[Date]={">=$(=date(max(Date)-20))<$(=max(Date)+1)"}>}

          aggr(

               count(distinct if([Date de réception]) = [Date], [Numéro de dossier])),

          Date)

     )

Voici les deux problèmes rencontrés :

  • Lorsque je sélectionne une semaine, la formule effectue la moyenne sur la semaine au lieu des 10 dernières semaines.
  • Lorsque je sélectionne 10 semaines (ex : de S11 à S20), le résultat est différent pour une autre sélection avec une semaine en plus (ex : de S10 à S20) auquel j'ajoute le mois précédent.

Merci à vous.

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Essaye ça :

avg({1<[Date]={">=$(=date(max(Date)-20))<$(=max(Date)+1)"}>}

          aggr(

               count({1} distinct if([Date de réception]) = [Date], [Numéro de dossier])),

          Date)

     )

Il faut également spécifier que ton Count ignore les sélections effectuées.

Tu dis que tu veux la moyenne des 10 dernières semaines, mais tu ne précises pas quelle moyenne. Ici tu auras la moyenne journalière.

View solution in original post

9 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

A mon avis, créé une variable vDateRef avec des IF.

Si tu as sélectionné une semaine, alors tu calcules weekend(),

Sinon si tu as un mois de sélectionné, alors tu calcules monthend()

Sinon si tu as sélectionné Annee, alors tu calcules yearend()

Pour voir si une semaine est sélectionné, tu fais IF(len(SEMAINE)>0, weekend(SEMAINE) etc...

Enfin tu appelles cette variable dans ton set analysis :  $(vDateRef)

Kevin

m_m_fr
Contributor III
Contributor III
Author

Merci de ta réponse Kevin.

Le soucis, c'est qu'il est possible de sélectionner plusieurs semaines ou plusieurs mois, ou mélanger des semaines et des mois, etc.

kevinchevrier
Partner - Creator III
Partner - Creator III

Prends les valeurs max si plusieurs semaines de sélectionnées. Idem pour les mois.

sfatoux72
Partner - Specialist
Partner - Specialist

Essaye ça :

avg({1<[Date]={">=$(=date(max(Date)-20))<$(=max(Date)+1)"}>}

          aggr(

               count({1} distinct if([Date de réception]) = [Date], [Numéro de dossier])),

          Date)

     )

Il faut également spécifier que ton Count ignore les sélections effectuées.

Tu dis que tu veux la moyenne des 10 dernières semaines, mais tu ne précises pas quelle moyenne. Ici tu auras la moyenne journalière.

m_m_fr
Contributor III
Contributor III
Author

Cher Sébastien,

C'est parfait. Ta formule fonctionne dans tous les cas possibles.

Il ne me reste plus qu'une seule problématique :

Comment prendre les 10 dernières semaines au lieu des 21 derniers jours ?

sfatoux72
Partner - Specialist
Partner - Specialist

Tu peux pas simplement faire la même chose mais pour 10 semaines, donc 70 jours ?

Ou tu veux des semaines entières?

Définit exactement ce que tu veux en fonction de Max(Date) avec un 1 ou 2 exemples:

  • Début période
  • Fin période
m_m_fr
Contributor III
Contributor III
Author

Je veux précisément prendre 10 semaines entières.

  • Début de période :      WeekStart(max(Date)) - 9
  • Fin de période :           max(Date)
sfatoux72
Partner - Specialist
Partner - Specialist

Ok, donc tu auras 9 semaines entières plus la partie de la semaine dans laquelle se trouve max(Date).

avg({1<[Date]={">=$(=WeekStart(Max(Date)-63))<$(=max(Date)+1)"}>}

          aggr(

               count({1} distinct if([Date de réception]) = [Date], [Numéro de dossier])),

          Date)

     )

m_m_fr
Contributor III
Contributor III
Author

Merci Sébastien.

Tout fonctionne parfaitement.