Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Announcements
QlikWorld, June 24-25, 2020. Free virtual event for DI and DA gurus. Register Now
Highlighted
Not applicable

Lier les dates de mes tables au calendrier Master

Bonjour,

J'ai récemment créé une application avec des tables comprenant des champs qui sont des dates. J'ai suivi le tutoriel pour créer un "calendrier master" qui me servira de filtre.

Cependant, je n'arrive pas à relier les dates de mes différentes tables au calendrier. Dans le "Modèle de données", il n'y a pas de liens entre le calendrier et les dates de mes tables. Celà ne me permet pas de réaliser des graphiques qui tiennent compte de la date (ex : nombre de réservations par mois...).

Merci pour votre aide.

Ce que j'ai fait :

J'ai chargé avant le calendrier les 3 tables suivantes (celles qui contiennent des dates) :

- "parks" avec 2 champs dates : "Park_created" et "Park_updated"

- "bookings" avec plusieurs champs dates : "Reservation_created", "Reservation_updated", "Reservation_cancelled"

- "purchases" avec 2 champs dates : "Purchase_created" et "Purchase_updated"

Voici le script que j'ai utilisé pour créer mon calendrier (tuto adapté) :

// *************** CALENDRIER*******************************************
DATES_TEMP:
LOAD distinct date(trim(Park_created),'DD/MM/YYYY') as DATE

RESIDENT parks WHERE (len(Park_created)>0);

LOAD distinct date(trim(Purchase_created),'DD/MM/YYYY') as DATE
RESIDENT purchases WHERE (len(Purchase_created)>0);
LOAD distinct date(trim(Reservation_created),'DD/MM/YYYY') as DATE
RESIDENT bookings WHERE (len(Reservation_created)>0);
NoConcatenate
DATES:
Load distinct date(DATE) as QUERY_DATE
RESIDENT DATES_TEMP
ORDER BY DATE ASC;
drop table DATES_TEMP;
LET varMinDate = round(Num(Peek('QUERY_DATE', 0,'DATES')));
LET varMaxDate = round(Num(Peek('QUERY_DATE', -1,'DATES')));
TEMPCALENDRIER:
LOAD $(varMinDate) + rowno() - 1 AS Num,
date($(varMinDate) + rowno() - 1) AS TempDate
AUTOGENERATE $(varMaxDate) - $(varMinDate) + 1;
CALENDRIER:
LOAD distinct trim(date(TempDate)) AS DATE,
Week(TempDate) AS SEMAINE,
Year(TempDate) AS ANNEE,
Month(TempDate) AS MOIS,
Day(TempDate) AS JOUR,
Weekday(TempDate) AS JOUR_SEMAINE,
T' & ceil(month(TempDate) / 3) AS TRIMESTRE,
MonthName(TempDate) AS MOIS_ANNEE,
Week(TempDate)&'-'&Year(TempDate) AS SEMAINE_ANNEE
RESIDENT TEMPCALENDRIER ORDER BY TempDate ASC;
Tags (1)
5 Replies
Highlighted
Not applicable

Re: Lier les dates de mes tables au calendrier Master

Bonjour,

C'est possible d'avoir une capture d'écran de votre modéle de donnée ?

Highlighted
Not applicable

Re: Lier les dates de mes tables au calendrier Master

Bonjour,

Merci pour votre aide.

Ci-dessous, le modèle de données.

Depuis, j'ai tenté d'ajouter ce code pour interpréter les champs "date" mais ca ne change rien...

[autoCalendar]:

  DECLARE FIELD DEFINITION Tagged ('$date')

FIELDS

  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),

  Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter', '$cyclic'),

  Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$yearquarter', '$qualified'),

  Dual('Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [_YearQuarter] Tagged ('$yearquarter', '$hidden', '$simplified'),

  Month($1) AS [Month] Tagged ('$month', '$cyclic'),

  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),

  Dual(Month($1), monthstart($1)) AS [_YearMonth] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),

  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber', '$cyclic'),

  Date(Floor($1)) AS [Date] Tagged ('$axis', '$date', '$qualified'),

  Date(Floor($1), 'D') AS [_Date] Tagged ('$axis', '$date', '$hidden', '$simplified'),

  If (DayNumberOfYear($1) <= DayNumberOfYear(Today()), 1, 0) AS [InYTD] ,

  Year(Today())-Year($1) AS [YearsAgo] ,

  If (DayNumberOfQuarter($1) <= DayNumberOfQuarter(Today()),1,0) AS [InQTD] ,

  4*Year(Today())+Ceil(Month(Today())/3)-4*Year($1)-Ceil(Month($1)/3) AS [QuartersAgo] ,

  Ceil(Month(Today())/3)-Ceil(Month($1)/3) AS [QuarterRelNo] ,

  If(Day($1)<=Day(Today()),1,0) AS [InMTD] ,

  12*Year(Today())+Month(Today())-12*Year($1)-Month($1) AS [MonthsAgo] ,

  Month(Today())-Month($1) AS [MonthRelNo] ,

  If(WeekDay($1)<=WeekDay(Today()),1,0) AS [InWTD] ,

  (WeekStart(Today())-WeekStart($1))/7 AS [WeeksAgo] ,

  Week(Today())-Week($1) AS [WeekRelNo] ;

DERIVE FIELDS FROM FIELDS [Park_Created], [Park_Updated] USING [autoCalendar] ;

Qlik Modele.png

Highlighted
Partner
Partner

Re: Lier les dates de mes tables au calendrier Master

C'est normale que rien ne soit lié, le champs clé de ton calendrier DATE, ne correspond à aucune de tes dates.

Pour rappel, dans QlikView, les champs sont liées par homonymie.

Partant de là, on se rend vite compte que tu ne peux pas lié directement ton calendrier à tous tes champs date.

Ce qui n'aurait aucun sens d'ailleurs, car la date sélectionnées dans ton calendrier s'appliquerait alors à tous tes champs date et je suppose que tu n'as aucune donnée qui a la même date de Park, Purchase, Reservation, ...

Plusieurs solutions:

  • Une table calendrier par champ date, en tout cas pour champs qui le nécessite.
    Tu aurais alors des champs:
    • Park_created, PARK_CREATED_ANNEE, PARK_CREATED_MOIS, PARK_CREATED_SEMAINE, ..
    • Reservation_created, RESERVATION_CREATED_ANNEE, RESERVATION_CREATED_MOIS, RESERVATION_CREATED_SEMAINE, ..
    • ...
  • Pour les autres solution, ça dépend de la structure de tes données ...
Highlighted
Not applicable

Re: Lier les dates de mes tables au calendrier Master

Bonjour,

Merci pour votre aide.

J'ai en effet créé un calendrier uniquement sur la valeur "Park_Created" dans un premier temps. Le lien est effectif avec le champs de la table Parks.

Mon objectif est d'obtenir sur l'histogramme le nombre de parkings créés mois par mois depuis la première date.

Ensuite, j'ai créé une feuille et un histogramme avec comme dimension "Park_Created_MonthYear".

1) Si je mets la mesure "Count(Park_ID)", Toutes les valeurs ne sont pas indiquées mois par mois mais uniquement à l'extérieur et le nombre total affiché ne correspond pas.

2) Si je mets la mesure "Count(Park_Created", les valeurs sont bien affichées mois par mois mais correspondent au nombre de jours par mois.et non au nombre de parkings créés au cours de chaque mois (ex: Janvier = 31, Février = 28, ...)

Merci d'avance pour votre aide.

Ci-dessous, le modèle actuel retravaillé :

Modele Qlik 2.png

Highlighted
Partner
Partner

Re: Lier les dates de mes tables au calendrier Master

Bonjour Sébastien,

Peux-tu joindre ton appli ? Ce n'est pas évident de comprendre ton problème.