Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
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;
Labels (1)
5 Replies
Not applicable
Author

Bonjour,

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

Not applicable
Author

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

sfatoux72
Partner - Specialist
Partner - Specialist

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 ...
Not applicable
Author

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

lcloatre
Partner - Creator III
Partner - Creator III

Bonjour Sébastien,

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