Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
lcloatre
Partner - Creator III
Partner - Creator III

Trucs et astuces - création d'un jeu de données

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

Labels (1)
2 Replies
Anonymous
Not applicable

bravo, clareté, efficacité !

lcloatre
Partner - Creator III
Partner - Creator III
Author

Merci Luc.