5 Replies Latest reply: Apr 24, 2017 4:12 AM by LAURENT CLOATRE RSS

    Lier les dates de mes tables au calendrier Master

    Sebastien Norgute

      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;
        • Re: Lier les dates de mes tables au calendrier Master
          Jean Eude

          Bonjour,

           

           

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

            • Re: Lier les dates de mes tables au calendrier Master
              Sebastien Norgute

              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

            • Re: Lier les dates de mes tables au calendrier Master
              Sébastien Fatoux

              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 ...
                • Re: Lier les dates de mes tables au calendrier Master
                  Sebastien Norgute

                  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