Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Nombre | Mois |
---|---|
0 | Janvier |
800 | février |
800 | mars |
1600 | avril |
1000 | mai |
c'est possible de faire ça sur qlik par une fonction ou par un set analysis?
Merci
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
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;
Anis,
Il te suffit d'ajouter le mois en Dimension.
J'ai la dimension mois, mais dans mon graphe j'ai ça:
alors que je devais avoir non un cumul mais un nombre par mois sachant que l'option cumul n'est pas coché.
Peux-tu partager ton appli ?
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
];
D'accord merci je vais essayer
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.
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.
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:
Date | Type | Num-Se | Nombre |
août-16 | NB | 154 | 15 |
août-16 | NB | 178 | 20 |
août-16 | CL | 154 | 9 |
août-16 | CL | 178 | 13 |
sept-16 | NB | 154 | 17 |
sept-16 | NB | 178 | 23 |
sept-16 | CL | 154 | 20 |
sept-16 | CL | 178 | 28 |
oct-16 | NB | 154 | 14 |
oct-16 | CL | 154 | 8 |
Anis,
Ci-joint le résultat sur QlikView avec le jeu d'essai.