4 Replies Latest reply: Jul 7, 2015 8:48 AM by Xavier Retaillaud RSS

    Erreur création calendrier / master calendar creating issue

    bruno bertels

      Bonjour

       

      J'essaye en vain de créer un CALENDRIER sur une de mes mes APP sous Qlik Sense Desktop en créant un MASTER CALENDAR.

       

      J'essaye deux méthodes :

      la première me renvoie une erreur en rouge ci dessous (méthode 1)

      la seconde se charge mais quand j'utilise les champs date créés ( par exemple "month") j'ai des graphiques comme ceci : (méthode 2)

       

       

      script méthode 1 :

       

      L'erreur suivante s'est produite: on voit à l'affichage de l'erreur qu'il ne reprend pas les expressions :   $, varMinDate et varMaxDate

       

      Script line error:

      Emplacement de l'erreur:

      TempCalendar: LOAD DATE( + ROWNO() -1) AS TempDate AUTOGENERATE - +1

       

      mon champ DATE est sous ce format : et s'appelle "Date"

       

      Voici le script que j'utilise :

       

      let varMinDate = NUM(PEEK('Date',0,'base RDV'));

      let varMaxDate = NUM(PEEK('Date',-1,'base RDV'));

       

      TempCalendar:

      LOAD

      DATE($(varMinDate) + ROWNO() -1) AS TempDate

      AUTOGENERATE $(varMaxDate) - $(varMinDate) +1;

       

      // Create the Master Calendar

      MasterCalendar:

      LOAD

      DATE(TempDate) AS Date,

      WEEK(TempDate) AS Week,

      YEAR(TempDate) AS Year,

      MONTH(TempDate) AS Month,

      DAY(TempDate) AS Day,

      INYEARTODATE(TempDate,'2014-03-31', 0) *-1 AS CYTDFlag,

      INYEARTODATE(TempDate,'2013-03-31',0) *-1 AS LYTDFlag,

      DATE(MONTHSTART(TempDate), 'MMM-YYYY') AS MonthYear,

      'Q' & CEIL(MONTH(TempDate)/3) AS Quarter,

      WEEK(TempDate)&'-'&YEAR(TempDate) AS WeekYear,

      WEEKDAY(TempDate) AS WeekDay

      RESIDENT

      TempCalendar

      Order BY

      TempDate ASC;

      DROP FIELD TempDate;

       

       

      Méthode 2 :

       

      Dans cette méthode

      Le chargement des données fonctionne

      Mais impossible de lier les données aux champs de calendrier créés.

       

      j'utilise une ligne de script pour aplatir mon format date et le renommer en 'Date du Rdv"

       

      Date(floor(Timestamp#("Date",'DD MMMM YYYY hh:mm')),'DD/MM/YYYY') as "Date du Rdv",

       

      puis j'utilise ce script :

       

      let varMinDate = NUM(PEEK('Date du Rdv',0,'base RDV'));

      let varMaxDate = NUM(PEEK('Date du Rdv',-1,'base RDV'));

       

      TempCalendar:

      LOAD

      DATE($(varMinDate) + ROWNO() -1) AS TempDate

      AUTOGENERATE $(varMaxDate) - $(varMinDate) +1;

       

       

      // Create the Master Calendar

      MasterCalendar:

      LOAD

      DATE(TempDate) AS Date,

      WEEK(TempDate) AS Week,

      YEAR(TempDate) AS Year,

      MONTH(TempDate) AS Month,

      DAY(TempDate) AS Day,

      INYEARTODATE(TempDate,'2014-03-31', 0) *-1 AS CYTDFlag,

      INYEARTODATE(TempDate,'2013-03-31',0) *-1 AS LYTDFlag,

      DATE(MONTHSTART(TempDate), 'MMM-YYYY') AS MonthYear,

      'Q' & CEIL(MONTH(TempDate)/3) AS Quarter,

      WEEK(TempDate)&'-'&YEAR(TempDate) AS WeekYear,

      WEEKDAY(TempDate) AS WeekDay

      RESIDENT

      TempCalendar

      Order BY

      TempDate ASC;

      DROP FIELD TempDate;

       

      Et çà ressort çà en graphique :

       

       

      Si quelqu'un peut m'aider merci d'avance

       

      Bruno

        • Re: Erreur création calendrier / master calendar creating issue
          Xavier Retaillaud

          Bonjour Bruno,

           

          A priori il n'arrive pas à interpréter le format "22 déc. 2014 18:15"  comme étant une date.

           

          Je pense qu'il faut bien utiliser timestamp ou timestamp#, essaye avec ça :

           

          Date(floor(Timestamp#("Date",'DD MMM. YYYY hh:mm')),'DD/MM/YYYY') as "Date du Rdv",

           

          C'est à dire le mois sur 3 caractères avec un point derrière. Par contre ça risque de poser problème pour le mois de mai par exemple ou il n'y aura pas de "." dans l'expression.

           

          Une solution un peu barbare serait d'utiliser une expression avec cette structure  if(isnull(...), timestamp(...), timestamp(...))

           

          Il y a sans doute plus élégant.

           

          Cordialement,

          Xavier.

            • Re: Erreur création calendrier / master calendar creating issue
              Xavier Retaillaud

              Après test dans QlikSense (qui a enfin voulu démarrer) ceci devrait marcher :

               

              Date(DATE#("date",'DD MMM YYYY hh:mm')) as "Date du Rdv",

                • Re: Erreur création calendrier / master calendar creating issue
                  bruno bertels

                  Bonjour Xavier

                   

                  Tout d'abord merci pour ta réponse et ton aide

                   

                  J'ai essayé

                   

                  avec ceci :

                  dans le script

                  Date(floor(Timestamp#("Date",'DD MMM YYYY hh:mm')),'DD/MM/YYYY') as "Date du Rdv"

                  et ceci dans le master calendar :

                  let varMinDate = NUM(PEEK('Date du Rdv',0,'base RDV'));

                  let varMaxDate = NUM(PEEK('Date du Rdv',-1,'base RDV'));

                  LOAD

                  DATE($(varMinDate) + ROWNO() -1) AS TempDate

                  AUTOGENERATE $(varMaxDate) - $(varMinDate) +1;

                   

                   

                  les données sont chargées et le champs date est bien " applati" au format DD/MM/YYYY

                   

                  mais impossible ensuite d'associer les données au calendrier

                   

                  avec ceci :

                  Date(DATE#("date",'DD MMM YYYY hh:mm')) as "Date du Rdv"

                  j'obtiens une erreur "gargabe after statement": je pense à cause du format date qui conserve les heures minutes et on voit des chiffres après la virgule ex  : 41641,375


                  TempCalendar << AUTOGENERATE(41997) Lignes extraites : 41 997

                  L'erreur suivante s'est produite:

                  Garbage after statement

                  Emplacement de l'erreur:

                  TempCalendar: LOAD DATE(41641,375 + ROWNO() -1) AS TempDate AUTOGENERATE 41997,625 - 41641,375 +1

                   

                   

                  Bref je crois que je vais garder ma solution initiale. Temps pis

                   

                  En tout cas merci du coup de main

                   

                  Bruno