Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
brunobertels
Master
Master

Erreur création calendrier / master calendar creating issue

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

4 Replies
Not applicable

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.

Not applicable

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",

brunobertels
Master
Master
Author

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

Not applicable

Pour enlever les chiffres après la virgule tu peux remplacer les NUM() de varMinDate et varMaxDate par des FLOOR().

Cordialement,

Xavier.