Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Dans ce tutoriel nous allons voir comment créer un Calendrier sur QlikView comportant les dates qui vous intéressent.
Pour créer ce calendrier, on passera par les quatre étapes suivantes :
1- Définir une date de début et une date de fin pour le calendrier
2- Générer toutes les dates possibles entre les dates min et max définies précédemment
3- Créer les différentes présentations des dates (Année, mois, semaines, ...)
4- Nettoyer ce qui n'est plus utile (tables et variables)
Vous êtes prêts ? commençons ...
1- Définir une date de début et une date de fin pour le calendrier
Le calendrier doit avoir une date de début et une date de fin (ce qu'est logique !). Selon les besoins de votre application, ces dates peuvent êtres définies de plusieurs façons. Je vais vous donner trois manières de les définir.
a- On peut définir une date en la saisissant en dur. Je vous conseil, si vous optez pour cette façon de faire, de l'utiliser uniquement pour définir la date minimum du calendrier.
b- Définir une date à partir de la date système, notamment pour la date maximum.
c- J'ai laissé le meilleur pour la fin ;), il s'agit de récupérer la date minimum et la date maximum de la table qui contient vos dates (Exemple: Table "ventes", champ: "DatesVentes").
Ci-dessous un exemple pour chacune des ces façons de faire.
LET vMinDate = Num(Makedate(2010,1,1));
LET vMaxDate = Num(Makedate(
Year
(Now()),
Month
(Now()),
Day
(Now())));
LET vMinDate = Num(peek(
'VentesDate'
,0,
'Ventes'
));
LET vMaxDate = Num(peek(
'VentesDate'
,-1,
'Ventes'
));
La fonction peek() vous permet de récupérer un enregistrement dans une colonne d'une table. "0" pour le premier enregistrement et "-1" pour le dernier enregistrement.
Néanmoins, l'utilisation efficace de cette fonction nécessite que votre colonne de date soit ordonnée de manière ascendante.
Une fois que vous avons nos dates min et max, nous allons procéder à la génération de toutes les dates possibles entres ces dates extrêmes.
Notre première date est évidemment la date min et la seconde date sera égale à la date min +1 et ainsi de suite jusqu'à la date max.
Ainsi, en utilisant une boucle WHILE on va autogénérer une valeur de 1 pour incrémenter la valeur initiale (vMinDate) jusqu'à créer la dernière date.
ChampDate:
LOAD
date
($(vMinDate)+IterNo()-1)
as
MaDate
AUTOGENERATE (1)
WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);
La fonction IterNo() permet de renvoyer un entier indiquant combien de temps un seul enregistrement est évalué." -1", car la première itération renvoie "1" (on additionne pas à la première itération pour avoir la date min).
3- Créer les différentes présentations des dates (Année, mois, semaines, ...)
Maintenant nous disposons d'un champ "MaDate" qu'on va utiliser pour créer les différents composants de notre calendrier. je vais créer les principaux d'entre eux, et à vous de créer d'autres si vous en avez besoin.
Calendrier:
LOAD
MaDate
as
Date
,
Year
(MaDate)
as
Année,
'T '
& Num(Ceil(
Month
(MaDate)/3),
'(ROM)0'
)
as
Trimestre,
Month
(MaDate)
as
Mois,
MonthEnd(MaDate)
as
DateFinMois,
Week(MaDate)
as
Semaine,
Weekday(MaDate)
as
JourSemaine,
Day
(MaDate)
as
Jour
RESIDENT ChampDate;
Je rappelle que Resident est un prédicat qui est utilisé pour charger des données qui sont déjà chargées.
4- Nettoyer ce qui n'est plus utile (tables et variables)
Voila nous avons crée notre Calendrier. Mais pour faire les choses proprement, on va supprimer la table "ChampDate" et les variables vMinDate et vMaxDate qui nous servent plus.
DROP
TABLE
ChampDate;
SET
vMinDate = ;
SET
vMaxDate = ;
Au final, vous allez avoir une table qui va ressembler à la suivante :
Si vous vous avez des questions, n'hésitez à laisser un commentaire.
Lotfi BENKHIDER