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.
|
Wenn Sie eine Tabelle mit StringDate und Date als Dimensionen erstellen, lauten die Ergebnisse wie folgt:
|
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.