Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
En début de projet, il arrive que les données du client ne soient pas encore disponibles. Pour ne pas perdre de temps, il est possible de se constituer un jeu d’essai.
Pour quelques données, le mode manuel est le plus rapide. On peut se constituer un fichier Excel ou se créer un script comme ci-dessous :
VENTES:
LOAD * Inline [
Date, NB Ventes
01/01/2017, 5
02/01/2017, 6
03/01/2017, 7
04/01/2017, 9
05/01/2017, 10
10/01/2017, 10
];
Une fois mes premiers tests effectués sur ma table VENTES, j’ai besoin d’avoir des données sur une année entière. Pas question de saisir les 365 jours de l’année.
Je vais commencer par créer un calendrier (https://community.qlik.com/docs/DOC-4848).
LET vMinDate = Num(Makedate(2017,1,1));
LET vMaxDate = Num(Makedate(Year(Now()),12,31));
ChampDate:
LOAD date($(vMinDate)+IterNo()-1) as MaDate
AUTOGENERATE (1)
WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);
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;
DROP TABLE ChampDate;
SET vMinDate = ;
SET vMaxDate = ;
Puis, en m’appuyant sur la table Calendrier, je vais générer un nombre aléatoire de ventes.
La fonction rand() renvoie un nombre aléatoire entre 0 et 1. C’est un nombre avec de nombreuses décimales. Comme je veux limiter le nombre de ventes à 100 par jour, je multiplie le nombre généré aléatoirement.
VENTES:
NoConcatenate
Load Date,
round(rand( )*100) as [NB Ventes]
resident Calendrier;
Maintenant que j’ai pu faire mes tests sur des chiffres annuels, j’ajoute les vendeurs.
Génération du calendrier
LET vMinDate = Num(Makedate(2017,1,1));
LET vMaxDate = Num(Makedate(Year(Now()),12,31));
ChampDate:
LOAD date($(vMinDate)+IterNo()-1) as MaDate
AUTOGENERATE (1)
WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);
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;
DROP TABLE ChampDate;
SET vMinDate = ;
SET vMaxDate = ;
Ajout des vendeurs
VENDEURS:
LOAD * Inline [
VENDEUR, NOM, PRENOM
MARTIN, MARTIN, Jacques
DEUF, DEUF, John
BAMBELLE, BAMBELLE, Marie
];
Table temporaire réunissant les 365 jours de l’année et les 3 vendeurs, soit 1095 occurrences.
TEMP_VENTES:
NoConcatenate
LOAD Date
Resident Calendrier;
Join
LOAD VENDEUR
Resident VENDEURS;
Table VENTES
VENTES:
NoConcatenate
Load *,
round(rand( )*100) as [NB Ventes]
resident TEMP_VENTES;
DROP Table TEMP_VENTES;
Ces quelques exemples illustrent bien la puissance et la rapidité de QlikView pour générer des données.
Si vous vous avez des questions, n'hésitez à laisser un commentaire.
Laurent CLOATRE
bravo, clareté, efficacité !
Merci Luc.