Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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.
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",
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
Pour enlever les chiffres après la virgule tu peux remplacer les NUM() de varMinDate et varMaxDate par des FLOOR().
Cordialement,
Xavier.