Die Funktion makeweekdate() ist sowohl als Skript als auch als Diagrammfunktion verfügbar. Mit der Funktion wird das Datum basierend auf den an die Funktion übergebenen Parametern berechnet.
Argumente
Argument
Beschreibung
weekyear
Das Jahr, wie es durch die Funktion WeekYear() für das spezifische Datum definiert wird, also das Jahr, zu dem die Wochennummer gehört.
InformationshinweisDas Wochenjahr kann sich in einigen Fällen vom Kalenderjahr unterscheiden, zum Beispiel, wenn Woche 1 bereits im Dezember des Vorjahres beginnt.
week
Die Wochennummer, wie sie durch die Funktion Week() für das spezifische Datum definiert wird.
Wenn keine Wochennummer angegeben ist, wird 1 angenommen.
weekday
Der Tag der Woche, wie durch die Funktion WeekDay() für das betreffende Datum definiert. 0 ist der erste Tag der Woche, 6 der letzte Tag der Woche.
Wenn kein Wochentag angegeben ist, wird 0 angenommen.
Informationshinweis0 bezieht sich immer auf den ersten Tag der Woche und 6 auf den letzten; welcher Wochentag jedoch der Zahl entspricht, wird durch den Parameter first_week_day bestimmt. Ist nichts definiert, wird der Wert der Variablen FirstWeekDay verwendet.
Wenn gestückelte Wochen zusammen mit einer unmöglichen Parameterkombination verwendet werden, kann dies zu einem Ergebnis führen, das nicht zum gewählten Jahr gehört.
Beispiel:
MakeWeekDate(2021,1,0,6,1)
Gibt „Dec 27 2020“ zurück, da dieser Tag der erste Tag (der Sonntag) der angegebenen Woche ist. „Jan 1 2021“ war ein Freitag.
first_week_day
Legt den Tag fest, an dem die Woche beginnt. Ist nichts definiert, wird der Wert der Variable FirstWeekDay verwendet.
Die möglichen Werte für first_week_day sind 0 für Montag, 1 für Dienstag, 2 für Mittwoch, 3 für Donnerstag, 4 für Freitag, 5 für Samstag und 6 für Sonntag.
Weitere Informationen über die Systemvariable finden Sie unter FirstWeekDay.
broken_weeks
Wenn Sie broken_weeks nicht angeben, wird der Wert der Variablen BrokenWeeks verwendet, um festzulegen, ob die Wochen gestückelt sind oder nicht.
Weitere Informationen über die Systemvariable finden Sie unter BrokenWeeks.
reference_day
Wenn Sie reference_day nicht angeben, wird der Wert der Variablen ReferenceDay verwendet, um festzulegen, welcher Tag im Januar als Referenztag für die Definition von Woche 1 konfiguriert wird.
Weitere Informationen über die Systemvariable finden Sie unter ReferenceDay.
Verwendung
Die Funktion makeweekdate() wird in der Regel im Skript für die Datengenerierung verwendet, um eine Liste von Datumsangaben zu generieren oder um Datumswerte zu konstruieren, wenn Jahr, Woche und Tag der Woche in den Eingabedaten bereitgestellt werden.
Die folgenden Beispiele nehmen an:
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Funktionsbeispiele
Beispiel
Ergebnis
makeweekdate(2014,6,6)
gibt 02/09/2014 zurück
makeweekdate(2014,6,1)
gibt 02/04/2014 zurück
makeweekdate(2014,6)
gibt 02/03/2014 zurück (Wochentag 0 wird angenommen)
Regionaleinstellungen
Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung SET DateFormat in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern.
Die standardmäßigen regionalen Einstellungen in Apps basieren auf den regionalen Systemeinstellungen der Computer oder Server, auf denen Qlik Sense installiert ist. Wenn der Qlik Sense-Server, auf den Sie zugreifen, auf Schweden festgelegt ist, verwendet der Dateneditor die schwedischen regionalen Einstellungen für Datums-, Uhrzeit- und Währungsangaben. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Sense angezeigt wird. Qlik Sense wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.
Beispiel 1 – Tag eingeschlossen
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens Sales.
Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: year, week und sales.
Ein vorangehender load-Befehl, der verwendet wird, um eine Kennzahl end_of_week zu erstellen. Dabei wird die Funktion makeweekdate() verwendet, um das Datum für den Freitag dieser Woche im Format MM/TT/JJJJ zurückzugeben.
Um zu beweisen, dass das zurückgegebene Datum ein Freitag ist, ist die Formel end_of_week auch in die Funktion weekday() eingeschlossen, um den Tag der Woche zu zeigen.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
transaction_year
transaction_week
end_of_week
week_day
Ergebnistabelle
transaction_year
transaction_week
end_of_week
week_day
2022
01
01/07/2022
Fr
2022
02
01/14/2022
Fr
2022
03
01/21/2022
Fr
2022
04
01/28/2022
Fr
2022
05
02/04/2022
Fr
2022
06
02/11/2022
Fr
2022
07
02/18/2022
Fr
Das Feld end_of_week wird im vorangehenden load-Befehl mithilfe der Funktion makeweekdate() erstellt. Die Felder transaction_year und transaction_week werden über die Funktion als die Argumente für Jahr und Woche übergeben. Ein Wert von 4 wird als Argument für Tag verwendet.
Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen DateFormat zurückgegeben.
Die Funktion makeweekdate() und ihre Argumente sind auch in eine Funktion weekday() eingeschlossen, um das Feld week_day zurückzugeben. Wie in der Tabelle oben zu sehen ist, zeigt das Feld week_day, dass diese Datumswerte tatsächlich an einem Freitag liegen.
Beispiel 2 – Tag ausgeschlossen
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens Sales
Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: year, week und sales.
Eine vorangehende load-Anweisung, die verwendet wird, um eine Kennzahl first_day_of_week zu erstellen; dabei wird die Funktion makeweekdate() verwendet. Damit wird das Datum für den Montag dieser Woche im Format MM/TT/JJJJ zurückgegeben.
Um zu beweisen, dass das zurückgegebene Datum ein Montag ist, ist die Formel first_day_of_week auch in die Funktion weekday() eingeschlossen, um den Tag der Woche zu zeigen.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
weekday(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
transaction_year
transaction_week
first_day_of_week
week_day
Ergebnistabelle
transaction_year
transaction_week
first_day_of_week
week_day
2022
01
01/03/2022
Mo
2022
02
01/10/2022
Mo
2022
03
01/17/2022
Mo
2022
04
01/24/2022
Mo
2022
05
01/31/2022
Mo
2022
06
02/07/2022
Mo
2022
07
02/14/2022
Mo
Das Feld first_day_of_week wird in der vorangehenden load-Anweisung mithilfe der Funktion makeweekdate() erstellt. Die Parameter transaction_year und transaction_week werden als Funktionsargumente übergeben, und der Parameter für Tag wird leer gelassen.
Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen DateFormat zurückgegeben.
Die Funktion makeweekdate() und ihre Argumente sind auch in eine Funktion weekday() eingeschlossen, um das Feld week_day zurückzugeben. Wie in der Tabelle oben ersichtlich, gibt das Feld week_day in allen Fällen Montag zurück, da der Parameter in der Funktion makeweekdate() leergelassen wurde. Somit wird standardmäßig 0 (erster Tag der Woche) verwendet, und der erste Tag der Woche ist von der Systemvariablen FirstWeekDay auf Montag festgelegt.
Beispiel 3 – Diagrammobjektbeispiel
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens Sales
Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: year, week und sales.
In diesem Beispiel wird ein Diagrammobjekt verwendet, um eine Kennzahl zu erstellen, die der Berechnung für end_of_week im ersten Beispiel entspricht. Diese Kennzahl verwendet die Funktion makeweekdate(), um das Datum für den Freitag dieser Woche im Format MM/TT/JJJJ zurückzugeben.
Um zu beweisen, dass das zurückgegebene Datum an einem Freitag liegt, wird eine zweite Kennzahl erstellt, um den Tag der Woche zurückzugeben.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Ergebnisse
Gehen Sie folgendermaßen vor:
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
transaction_year
transaction_week
Um die Berechnung durchzuführen, die der des Felds end_of_week aus dem ersten Beispiel entspricht, erstellen Sie die folgende Kennzahl:
Ein dem end_of_week entsprechendes Feld wird im Diagrammobjekt als Kennzahl erstellt, indem die Funktion makeweekdate() verwendet wird. Die Felder transaction_year und transaction_week werden als die Argumente für Jahr und Woche übergeben. Ein Wert von 4 wird als Argument für Tag verwendet.
Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen DateFormat zurückgegeben.
Die Funktion makeweekdate() und ihre Argumente sind auch in eine Funktion weekday() eingeschlossen, um eine Berechnung zurückzugeben, die derjenigen für das Feld week_day im ersten Beispiel entspricht. Wie in der Tabelle oben zu sehen ist, zeigt die letzte Spalte rechts, dass diese Datumswerte tatsächlich auf einen Freitag fallen.
Beispiel 4 – Szenario
Übersicht
In diesem Beispiel erstellen Sie eine Liste der Datumswerte, die alle Freitage für das Jahr 2022 umfasst.
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
Ergebnisse
Ergebnistabelle
date
weekday
01/07/2022
Fr
01/14/2022
Fr
01/21/2022
Fr
01/28/2022
Fr
02/04/2022
Fr
02/11/2022
Fr
02/18/2022
Fr
02/25/2022
Fr
03/04/2022
Fr
03/11/2022
Fr
03/18/2022
Fr
03/25/2022
Fr
04/01/2022
Fr
04/08/2022
Fr
04/15/2022
Fr
04/22/2022
Fr
04/29/2022
Fr
05/06/2022
Fr
05/13/2022
Fr
05/20/2022
Fr
05/27/2022
Fr
06/03/2022
Fr
06/10/2022
Fr
06/17/2022
Fr
+ 27 weitere Zeilen
Die Funktion makeweekdate() findet jeden Freitag im Jahr 2022. Ein Wochenparameter von -2 sorgt dafür, dass keine Datumswerte ausgelassen werden. Abschließend erstellt eine vorangehende load-Anweisung ein weiteres Feld weekday zur Klarstellung, um zu zeigen, dass jeder Wert für date ein Freitag ist.
Hat diese Seite Ihnen geholfen?
Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!