Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
delphinewalter
Contributor III
Contributor III

Calcul N et N-1 avec sélection dynamique de la période

Bonjour, 

je sais que cette question a été abordée de nombreuses fois, j'ai lu beaucoup des posts sur le sujet (probablement pas tous), mais rien à faire, je n'y arrive pas et je ne comprends pas pourquoi.

J'ai créé à partir de ma table des ventes un MasterCalendar qui contient les champs suivants :

  • CalendarDate : la date complète
  • CalendarYear
  • CalendarMonth
  • CalendarDay
  • CalendarWeek
  • MonthYear au format MMM YYYY
  • WeekYear au format xx-YYYY
  • WeekDay résultat de cette même fonction

J'ai une liste de sélection avec mes années, une liste de sélection avec mes mois, et je voudrais pouvoir, en sélectionnant l'année et le mois, calculer : 

  • les ventes du mois M de l'année N
  • les ventes du mois M de l'année N-1

pour les ventes du mois M de l'année N, j'ai écrit comme formule : 

 

 

sum({$<CalendarYear={'$(=max(CalendarYear))'}>}V_CA_HT)

 

 

ça fonctionne.

pour les ventes du mois M de l'année N-1, j'ai fait plein de tests en fonction de ce que j'ai lu à droite à gauche mais qui ne fonctionnent pas :

 

 

sum({$<CalendarYear={'=$(=max(CalendarYear)-1)'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear-1))'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear)),$(=max(CalendarYear)-1)'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear)),$(=max(CalendarYear-1))'}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)-1)}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear-1))}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)),$(=max(CalendarYear)-1)}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)),$(=max(CalendarYear-1))}>}V_CA_HT)

la même chose sans le $ du début (sum({<CalendarYear...

Sum({$< MonthYear ={'=$(=vMonthYear)-365'}>} V_CA_HT) (avec vMonthYear=num(MonthYear))

 

 

qu'est-ce que je rate ? sachant que j'ai aussi fait le test en définissant une date de fin et une date de début, et là ça fonctionne : 

 

 

Sum({< CalendarDate = {'>=$(=Date(vStartDate-365))<=$(=Date(vEndDate-365))'} >} V_CA_HT)

 

 

 mais je trouve plus intuitif de sélectionner le mois et l'année, d'autant que j'ai beau mettre dans mon objet calendrier/curseur que la date min pour vEndDate est vStartDate, ça n'est pas pris en compte (=$(vStartDate) dans la case "valeur min") 

Merci pour votre aide !

Delphine

13 Replies
Seyko
Partner - Creator
Partner - Creator

Bonjour Delphine,

Je pense que lorsque tu fais la soustraction (-1), le résultat n'est plus interprété comme une date. Rajoute par dessus une fonction date et refais le test:

Sum({$<CalendarYear={"=$(=Date((max(CalendarYear)-1)))"}>}V_CA_HT)

cordialement.

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

Bonjour, 

 

merci pour ta réponse, mais non, ça me donne toujours le CA de l'année N et non celui de l'année N-1.

Seyko
Partner - Creator
Partner - Creator

Alors, j'ai fait le test, ça fonctionne chez moi. J'ai modifié l'expression, notamment en enlevant l'opérateur égal présent avant l'expansion dans le Set Analysis (cf. capture d'écran).

cordialement.

 

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

Je confirme que ça ne fonctionne pas chez moi, ci-joint les captures d'écran.

delphinewalter
Contributor III
Contributor III
Author

autre version en reprenant ta dernière modification : ça fait 0.

Seyko
Partner - Creator
Partner - Creator

Revois mes captures, on a pas les mêmes expressions! 

sum({$< Date.autoCalendar.Year={'$(=Year(max(Date.autoCalendar.Year)-1))'}>} Montant)

Adapte celle-ci et refais le test.

cordialement. 

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

Sauf erreur de ma part, ça correspond bien à la v2 que j'i envoyée.
Seyko
Partner - Creator
Partner - Creator

Oui, je viens de la voir. Vraiment étrange. Je t'enverrai bien mon application pour que tu compares mais je suis sous Sense et non View. Plus simple, fournit un extrait de ton jeu de données et je ferai le test avec.

cordialement.
Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

Alors, j'ai supprimé les variables vStartDate et vEndDate que j'avais créées au début et qui me permettaient le calcul en sélectionnant les dates de début et de fin sur un objet calendrier, et je me retrouve avec 4 (!) formules qui fonctionnent :

sum({$<CalendarYear={$(=max(CalendarYear)-1)}>}V_CA_HT) // fonctionne

sum({$<CalendarYear={$(=max(CalendarYear-1))}>}V_CA_HT) // fonctionne

sum({<CalendarYear={$(=max(CalendarYear)-1)}>}V_CA_HT) // fonctionne

sum({<CalendarYear={$(=max(CalendarYear-1))}>}V_CA_HT) // fonctionne

à ton avis, il vaut mieux prendre laquelle ? avec ou sans "$" au début (je ne sais pas à quoi ça sert pour être honnête), "-1" dans ou hors de la parenthèse de Max ?

Merci !