Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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; |
Bonjour,
C'est possible d'avoir une capture d'écran de votre modéle de donnée ?
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] ;
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:
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é :
Bonjour Sébastien,
Peux-tu joindre ton appli ? Ce n'est pas évident de comprendre ton problème.