Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problème calcul %Evol(N-1) set analysis

Bonjour,

J'ai besoin de votre aide pour un problème de calcul %Evol(N-1).

Je m'explique : j'ai une colonne de quantité du mois en cours ( c'est la somme des quantités du mois sélectionné), une colonne de quantité de l'année en cours ( c'est la somme des quantités de l'année jusqu'au mois sélectionné). Ces deux colonnes fonctionnent très bien, le système s'affiche bien les bons chiffres.

Par contre, pour calculer %Evol(N-1), j'ai appliqué le formule: [(qté mois en cours - qté mois de l'année N-1)/ qté mois de l'année N-1]*100.

J'ai utilisé set analysis pour réaliser cette expression :

(sum({$ <InvoiceYear={$(=Only(InvoiceYear))}> } [_QuantitySold]) - sum( { $ <InvoiceYear ={$(=Only(InvoiceYear)-1)},InvoiceMonth= { "<= $(=max(InvoiceMonth))"}>} [_QuantitySold]))/sum( { $ <InvoiceYear ={$(=Only(InvoiceYear)-1)},InvoiceMonth= { "<= $(=max(InvoiceMonth)) * 100.

Par exemple si je choisi le mois 02/2013

le système s'affiche bien la somme qté mois en cours = 456.

mais la somme qté mois de l'année N-1, il fait un calcul du total des quantités de l'année N-1 = 4444 alors que je veux qu'il affiche juste la quantité du mois l'année N-1 (c'est à dire 02/2012) = 230.

Je vous joins une capture d'écran pour que vous puissiez visualiser mon problème.

Je vous remercie d'avance pour votre aide.

Cordialement,

1 Solution

Accepted Solutions
almamy_diaby
Creator
Creator

ok je comprends:

mets (-12) à la place de (-13)

=num(((Sum({$< InvoiceYear={$(=Max(InvoiceYear))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),0),'MMM YYYY'))"}>} [QuantitySold])

-    

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-12),'MMM YYYY'))"}>} [QuantitySold]))

/

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))},  InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-12),'MMM YYYY'))"}>}[QuantitySold])

   ) ,'# ##0,00%')

View solution in original post

11 Replies
almamy_diaby
Creator
Creator

=num(((Sum({$< InvoiceYear={$(=Max(InvoiceYear))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),0),'MMM'))"}>} [QuantitySold])

-      

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM'))"}>} [QuantitySold]))

/

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))},  InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM'))"}>}[QuantitySold])

   ) ,'# ##0,00%')

Not applicable
Author

j'ai utilisé votre expression mais ça fontionne toujours pas. Il m'a rien affiché...

Ca veut dire quoi quand vous mettez (,-13),'MMM')?

si 13 correspond à l'année 2013, ce n'est pas ce que je veux faire car je dois avoir une expression générique qui permet aux utilisateurs de choisir n'importe quelle année dans la liste ( par exemple s'ils choisit l'année 2011, ils vont avoir le résultat %Evol(N-1) = %Evol2010 par exemple.

Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM'))"}>} [QuantitySold]))

Merci encore pour votre aide

Not applicable
Author

Bonjour Almamy,

Je sais pas si c'est à cause du format de mon indicateur "InvoiceYear,InvoiceMonth" que l'expression fonctionne pas.

Je vous joins une capture d'écran de la liste de ces indicateurs.

format indicateur mois année.png

almamy_diaby
Creator
Creator

C'est sans doute a cause du format du Mois

Essaie Ceci:

=num(((Sum({$< InvoiceYear={$(=Max(InvoiceYear))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),0),'MMM YYYY'))"}>} [QuantitySold])

-     

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM YYYY'))"}>} [QuantitySold]))

/

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))},  InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM YYYY'))"}>}[QuantitySold])

   ) ,'# ##0,00%')

Not applicable
Author

J'ai essayé ton expression, il m'affiche maitenant les chiffres mais pas les bons chiffres.

Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-13),'MMM YYYY'))"}>} [QuantitySold])

Dans cette expression, il prend en compte le mois Jan 2012 alors je veux qu'il prend le mois Feb 2012 car quand je sélectionne dans la liste des mois = Feb 2013, pour calculer %Evol (N-1), j'ai besoin le mois qui correspond au mois sélectionné, c'est à dire Feb 2012 au lieu Jan 2012

Je vous joins la capture d'écran de mon problème

Not applicable
Author

probleme expression mois.png

almamy_diaby
Creator
Creator

ok je comprends:

mets (-12) à la place de (-13)

=num(((Sum({$< InvoiceYear={$(=Max(InvoiceYear))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),0),'MMM YYYY'))"}>} [QuantitySold])

-    

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))}, InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-12),'MMM YYYY'))"}>} [QuantitySold]))

/

  Sum({$< InvoiceYear={$(=Max(InvoiceYear)),$(=Max(InvoiceYear-1))},  InvoiceMonth={ "$(=date(AddMonths(max(InvoiceMonth),-12),'MMM YYYY'))"}>}[QuantitySold])

   ) ,'# ##0,00%')

Not applicable
Author

Ca fonctionne parfaitement. Merci encore

Est-ce que tu peux m'expliquer en détail de ton expression stp?

-12 ça correspond à quoi ?

almamy_diaby
Creator
Creator

Fonction Addmonths

Addmonths(mois , 1) : Mois en Mois prochain

Addmonths(mois , 0) : Mois en cours

Addmonths(mois , -1) : Mois en précedant

Je t'invite à voir la Fonction Addmonths dans l'aide