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: 
Not applicable

Cumul

Bonjour,

j'ai un champ Nombre dans ma table qui représente le nombre de feuille, il est cumulé par mois:

Nombre
6500
7300
8100
9700
10700

Je voudrais avoir le nombre par mois donc  , un champ comme suite:

NombreMois
0Janvier
800février
800mars
1600avril
1000mai

c'est possible de faire ça sur qlik par une fonction ou par un set analysis?

Merci

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Salut Anis,

Tu trouveras ci dessous le script pour transformer tes données Nombre cumulées en données Nombre non cumulées., pour avoir le résultat suivant :

je met également l'application en pièce jointe

Community_1256294.png

L'important dans le script ci-dessous, c'est que les données de la table de fait soit ordonnées correctement afin que l'on puisse effectuer les calculs nécessaires pour avor des Nombre non cumulés

Tab1:
LOAD Date(Date#(Date, 'MM/YYYY'), 'MMM-YY') as Date,
   
Type,
   
[Num-Se],
   
Nombre
FROM [https://community.qlik.com/message/1256294?et=watches.email.thread#1256294]
(
html, codepage is 1252, embedded labels, table is @3);

Tab2:
LOAD Num,
   
Pays
FROM [https://community.qlik.com/message/1256294?et=watches.email.thread#1256294]
(
html, codepage is 1252, embedded labels, table is @4);

Fact:
NoConcatenate
LOAD
   
Previous(Date) as Date,
   
Type,
   
[Num-Se],
   
If( Type = Previous(Type) and [Num-Se] = Previous([Num-Se]) and Date = AddMonths(Previous(Date),1),
       
Nombre - Previous(Nombre)) as Nombre
Resident Tab1
Order By Type, [Num-Se], Date;

Left Join(Fact)
LOAD
   
Num as [Num-Se], // Clé de jointure
   
Pays
Resident Tab2;

DROP Table Tab1;
DROP Table Tab2;

View solution in original post

18 Replies
lcloatre
Partner - Creator III
Partner - Creator III

Anis,

Il te suffit d'ajouter le mois en Dimension.

Not applicable
Author

J'ai la dimension mois, mais dans mon graphe j'ai ça:11.PNG

alors que je devais avoir  non un cumul mais un nombre par mois sachant que l'option cumul n'est pas coché.

lcloatre
Partner - Creator III
Partner - Creator III

Peux-tu partager ton appli ?

sfatoux72
Partner - Specialist
Partner - Specialist

Hello,

Voici un jeu de données :

SET DateFormat='DD/MM/YYYY';

LOAD *,
Month(Date) as Mois,
Year(Date) as Année
INLINE [
Date, Nombre
01/10/2015, 4260
01/11/2015, 5000
01/12/2015, 5500
01/04/2016, 6500
01/05/2016, 7300
01/06/2016, 8100
01/07/2016, 9700
01/08/2016, 10700
]
;

J'ai ensuite utilisé les champs Mois et Année en dimension et l'expression suivante :

Sum(Aggr(sum(Nombre) - Above(sum(Nombre)), (Date,(NUMERIC, ASCENDING))))

L'éditeur d'expression te mettra des erreurs à cause de la partie (Date,(NUMERIC, ASCENDING)) qui peut être remplacée par Date si les données sont ordonnées par Date au chargement,

Le mieux serait tout de même de transformer tes données cumulées en données non cumulées lors du chargement, tu pourra ainsi directement les utiliser avec une simple expression  sum(Nombre) :

ATTENTION a trier tes données par date dans ta requête d'extraction, pour que la fonction previous fonctionne correctement.

SET DateFormat='DD/MM/YYYY';

LOAD
Date,
Nombre-Previous(Nombre) as Nombre,
Month(Date) as Mois,
Year(Date) as Année;
LOAD *
INLINE [
Date, Nombre
01/10/2015, 4260
01/11/2015, 5000
01/12/2015, 5500
01/04/2016, 6500
01/05/2016, 7300
01/06/2016, 8100
01/07/2016, 9700
01/08/2016, 10700
]
;

Not applicable
Author

D'accord merci je vais essayer

Not applicable
Author

Etant données que mes valeurs commence du mois de août en va dire si je calcule la valeur ça me donne pas de août car  Previous de août n'existe pas, de plus le calcul de la valeur du mois se base aussi sur 2 autres champs.

sfatoux72
Partner - Specialist
Partner - Specialist

Pour résoudre le problème de ta première donnée, tu peux la modifier comme suit (ici j'ai mis zéro comme valeur initial, mais tu peux mettre la valeur que tu veux)

Nombre-Alt(Previous(Nombre), 0) as Nombre

Concernant les 2 autre champs, si tu ne donnes pas toutes les informations, on ne peut pas deviner.

Donne un exemple de données concret.

Not applicable
Author

Alors voici un jeu de données concret:

Tab1 :

Date

Type

Num-Se

Nombre

8/2016

NB

154

47

8/2016

NB

178

58

8/2016

CL

154

14

8/2016

CL

178

78

9/2016

NB

154

62

9/2016

NB

178

78

9/2016

CL

154

23

9/2016

CL

178

91

10/2016

NB

154

79

10/2016

NB

178

101

10/2016

CL

154

43

10/2016

CL

178

119

11/2016

NB

154

93

11/2016

CL

154

51

Tab2 :

Num

Pays

154

FR

178

US

Fac:

Load Date,Type,Num-Se,Nombre  from [Fichier];

left join(Fac)  load Num as Num-Se, Pays from [Fichier] ;

La pour créer un graphe qui me représente le  nombre sans cumul comme suite:

 

DateTypeNum-SeNombre
août-16NB15415
août-16NB17820
août-16CL1549
août-16CL17813
sept-16NB15417
sept-16NB17823
sept-16CL15420
sept-16CL17828
oct-16NB15414
oct-16CL1548
lcloatre
Partner - Creator III
Partner - Creator III

Anis,

Ci-joint le résultat sur QlikView avec le jeu d'essai.