Ein Datum wird in der Regel im Qlik Format gespeichert, dieses sieht in etwa wie folgt aus:

1997-08-06 wird gespeichert als: 35648
09:00 wird gespeichert als: 0.375
1997-08-06 09:00 wird gespeichert als: 35648.375

Um ein Datum zu behandeln stehen in folgende Funktionen zur Verfügung:

 

date()

Date( A )
wobei A = 35648
String: 97-08-06 8/6/97
Zahl: 35648 35648
Date( A, ‚YY.MM.DD‘ )
wobei A = 35648
String: 97.08.06 97.08.06
Zahl: 35648 35648
Date( A, ‚DD.MM.YYYY‘ )
wobei A = 35648.375
String: 06.08.1997 06.08.1997
Zahl: 35648.375 35648.375
Date( A, ‚YY.MM.DD‘ )
wobei A = 8/6/97
String: NULL (leer) 97.08.06
Zahl: NULL 35648

 

date#() 

date#() ist im Gegensatz zu date() eine Interpretationsfunktion bzw. Cast Funktion, mit dieser Funktion erzwingen Sie das Ihr Datum im Qlik Format gespeichert wird. Dies vereinfacht später Zeitrechnungen an der Oberfläche als auch im Skript. Eine weitere nützliche Funktion dieser Art ist num#().

Fügen Sie Ihrer App dieses Beispielskript hinzu und führen Sie dieses aus.

Load *,
Num(Date#(StringDate)) as Date;
LOAD * INLINE [
Datum
8/7/97
8/6/1997
];

Wenn Sie eine Tabelle mit StringDate und Date als Dimensionen erstellen, lauten die Ergebnisse wie folgt:

Datum Date
8/7/97 35649
8/6/1997 35648

Sie sollten darauf achten das Ihr Datum im Qlik Format gespeichert wird. Da wie Sie sehen Funktionen wie z.B. date() davon ausgehen das genau dieses Format übergeben wird. 

Des weiteren  können Sie mit der Funktion floor() z.B. dafür sorgen das Stunden, Minuten und Sekunden entfernt werden um Tagesrechnungen zu vereinfachen, oder sicher zu stellen das für einen Master Kalender nur je ein Tag generiert werden. Auch in Set Analysis profitieren Sie von diesem Format.

Beispiele:

  • floor(Date)  ergibt nur den Tag des Datums
  • floor(Date) – 365 ergibt den Tag vom Datum – 1 Jahr.

 

Kalenderfunktionen:

year() / month() / day() / weekday() 

Load
  *
  , year(Datum) As Jahr
  , month(Datum) As Monat
  , week(Datum) As Kalenderwoche
  , weekday(Datum) As Wochentag
;
Load
  date#(Date) As Datum
 , otherFields
From Source;

 

Quartal mit Month() und Ceil()

Für das Quartal gibt es keine keine eigene Funktion, die Funktion month() ist eine duale Funktion und speichert sowohl den Wert für den jeweiligen Monat als auch den String (2|Feb).

ceil() rundet im Gegensatz zu floor() auf nicht ab.

Wir können also folgende Formel nutzen um das Quartal zu berechnen:

‚Q‘ & ceil(month(Date) / 3 ) As Quartal

Load
  *
  , year(Datum) As Jahr
  , month(Datum) As Monat
  , week(Datum) As Kalenderwoche
  , weekday(Datum) As Wochentag
  , 'Q' & ceil(month(Datum) / 3) As Quartal
;
Load
  date#(Date) As Datum
 , otherFields
From Source;

 

monthstart() für MonatJahr

für eine Zeitdarstellung über die Jahre benötigen Sie Felder wie Jahr Woche oder Monat Jahr als Dimension. Damit alle Daten des jeweiligen Monats wählbar sind müssen wir dafür sorgen das alle Daten das gleiche Datum erhalten. Hierzu können Sie die Funktion monthStart() nutzen um genau dies zu erreichen.

date(MonthStart(Datum),’MM-YYYY‘) As MonatJahr

Load
  *
  , year(Datum) As Jahr
  , month(Datum) As Monat
  , week(Datum) As Kalenderwoche
  , weekday(Datum) As Wochentag
  , 'Q' & ceil(month(Datum) / 3) As Quartal
  , date(MonthStart(Datum),'MM-YYYY') As MonatJahr
;
Load
  date#(Date) As Datum
 , otherFields
From Source;

 

Einen kompletten Kalender den Sie in Ihrem Skript mehrfach nutzen können finden Sie auch in meinem Framework in dem Skript MasterCalendarV2.qvs.