Diese Funktion liefert den Zeitstempel der ersten Millisekunde der Kalenderwoche, in der date liegt. Das Ergebnis wird als Kombination von Jahr und Wochennummer formatiert.
Die Funktion weekname() bestimmt, in welche Woche das Datum fällt, und gibt die Wochennummer und das Jahr dieser Woche zurück. Der erste Tag der Woche wird durch die SystemvariableFirstWeekDay bestimmt. Sie können aber auch den ersten Tag der Woche ändern, indem Sie das Argument first_week_day in der Funktion weekname() verwenden.
In Qlik Sense werden die regionalen Einstellungen bei der Erstellung der App abgerufen, und die entsprechenden Einstellungen werden im Skript als Umgebungsvariablen gespeichert.
Ein nordamerikanischer App-Entwickler erhält oft Set BrokenWeeks=1; im Skript, was gestückelten Wochen entspricht. Ein europäischer App-Entwickler erhält oft Set BrokenWeeks=0; im Skript, was nicht gestückelten Wochen entspricht.
Wenn Ihre Anwendung gestückelte Wochen verwendet, beginnt die Zählung der Wochennummer am 1. Januar und endet am Tag vor der Systemvariablen FirstWeekDay, unabhängig davon, wie viele Tage verstrichen sind.
Wenn Ihre Anwendung jedoch vollständige Wochen verwendet, kann Woche 1 im Vorjahr oder in den ersten Tagen im Januar beginnen. Das hängt davon ab, wie Sie die Systemvariablen ReferenceDay und FirstWeekDay verwenden.
Beispiel der Funktion „Weekname“
Datum
ISO-Wochenname
US-Wochenname
Sat 2020 Dec 26
2020/52
2020/52
Sun 2020 Dec 27
2020/52
2020/53
Mon 2020 Dec 28
2020/53
2020/53
Tue 2020 Dec 29
2020/53
2020/53
Wed 2020 Dec 30
2020/53
2020/53
Thu 2020 Dec 31
2020/53
2020/53
Fri 2021 Jan 1
2020/53
2021/01
Sat 2021 Jan 2
2020/53
2021/01
Sun 2021 Jan 3
2020/53
2021/02
Mon 2021 Jan 4
2021/01
2021/02
Tue 2021 Jan 5
2021/01
2021/02
Verwendung
Die Funktion weekname() ist nützlich, wenn Sie Aggregierungen nach Wochen vergleichen möchten.
Das ist beispielsweise der Fall, wenn Sie den Gesamtumsatz von Produkten nach Woche anzeigen möchten. Um die Einheitlichkeit mit der Umgebungsvariablen BrokenWeeks in der Anwendung zu wahren, verwenden Sie weekname() anstelle von lunarweekname(). Wenn die Anwendung vollständige Wochen verwendet, kann Woche 1 Tage vom Dezember des Vorjahres enthalten oder Tage im Januar des laufenden Jahres ausschließen. Wenn die Anwendung unvollständige Wochen verwendet, kann Woche 1 weniger als sieben Tage enthalten.
Rückgabe Datentyp: dual
Argumente
Argument
Beschreibung
timestamp
Datum oder Zeitstempel für die Evaluierung.
period_no
shift ist eine ganze Zahl, wobei 0 für die Woche steht, die date enthält. Negative Werte von "shift" stehen für vorangehende Wochen, positive Werte für nachfolgende Wochen.
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. Standardmäßig verwenden Qlik Sense-Funktionen 4 als Referenztag. Das heißt, dass die Woche 1 den 4. Januar enthalten muss, oder anders ausgedrückt: Woche 1 muss immer mindestens 4 Tage im Januar enthalten.
Weitere Informationen über die Systemvariable finden Sie unter ReferenceDay.
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. Weitere Informationen finden Sie unter Ändern von regionalen Einstellungen für Apps und Skripte.
Regionale Standardeinstellungen in Apps basieren auf dem Benutzerprofil. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Cloud angezeigt wird. Qlik Cloud wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.
Set FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Funktionsbeispiele
Beispiel
Ergebnis
weekname('01/12/2013')
Liefert 2013/02.
weekname('01/12/2013', -1)
Returns 2013/01.
weekname('01/12/2013', 0, 1)
Liefert 2013/02.
Beispiel 1 – Datum ohne zusätzliche Argumente
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz, der eine Reihe von Transaktionen für die letzte Woche in 2021 und die ersten beiden Wochen in 2022 enthält, wird in eine Tabelle namens „Transactions“ geladen.
Die Systemvariable DateFormat, die auf das Format MM/DD/YYYY festgelegt ist.
Die Systemvariable BrokenWeeks, die auf 1 festgelegt ist.
Die Systemvariable FirstWeekDay, die auf 6 festgelegt ist.
Ein vorangehender load-Befehl, der Folgendes enthält:
Die Funktion weekday(), die als das Feld „week_number“ festgelegt ist, das das Jahr und die Wochennummer zurückgibt, in denen die Transaktion stattfand.
Die Funktion weekname(), die als das Feld mit dem Namen „week_day“ festgelegt ist, um den Wochentagwert für jedes Transaktionsdatum anzuzeigen.
Ladeskript
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
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:
id
date
week_day
week_number
Ergebnistabelle
id
date
week_day
week_number
8183
12/27/2021
Mo
2021/53
8184
12/28/2021
Di
2021/53
8185
12/29/2021
Mi
2021/53
8186
12/30/2021
Do
2021/53
8187
12/31/2021
Fr
2021/53
8188
01/01/2022
Sa
2022/01
8189
01/02/2022
So
2022/02
8190
01/03/2022
Mo
2022/02
8191
01/04/2022
Di
2022/02
8192
01/05/2022
Mi
2022/02
8193
01/06/2022
Do
2022/02
8194
01/07/2022
Fr
2022/02
8195
01/08/2022
Sa
2022/02
8196
01/09/2022
So
2022/03
8197
01/10/2022
Mo
2022/03
8198
01/11/2022
Di
2022/03
8199
01/12/2022
Mi
2022/03
8200
01/13/2022
Do
2022/03
8201
01/14/2022
Fr
2022/03
Das Feld „week_number“ wird in der vorangehenden load-Anweisung erstellt, indem die Funktion weekname() verwendet und das Datumsfeld als Argument der Funktion übergeben wird.
Die Funktion weekname() identifiziert zunächst, in welche Woche der Datumswert fällt, und gibt die Wochennummernzählung und das Jahr zurück, in denen die Transaktion stattfand.
Die Systemvariable FirstWeekDay legt Sonntag als den ersten Tag der Woche fest. Die Systemvariable BrokenWeeks legt für die Anwendung die Verwendung von unvollständigen Wochen fest, Woche 1 beginnt also am 1. Januar.
Woche 1 beginnt am 1. Januar. Das ist ein Samstag, und daher geben Transaktionen an diesem Datum den Wert 2022/01 zurück (das Jahr und die Wochennummer).
Da die Anwendung unvollständige Wochen verwendet und der erste Wochentag Sonntag ist, geben Transaktionen vom 2. bis zum 8. Januar den Wert 2022/02 (Woche 2 im Jahr 2022) zurück. Ein Beispiel dafür ist Transaktion 8192, die am 5. Januar stattfand und den Wert 2022/02 für das Feld „week_number“ zurückgibt.
Beispiel 2 – period_no
Übersicht
Es werden derselbe Datensatz und dasselbe Szenario wie im ersten Beispiel verwendet.
In diesem Beispiel besteht aber die Aufgabe darin, ein Feld „previous_week_number“ zu erstellen, das das Jahr und die Wochennummer vor Stattfinden der Transaktion zurückgibt.
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in eine neue Registerkarte ein.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
id
date
week_day
week_number
Ergebnistabelle
id
date
week_day
week_number
8183
12/27/2021
Mo
2021/52
8184
12/28/2021
Di
2021/52
8185
12/29/2021
Mi
2021/52
8186
12/30/2021
Do
2021/52
8187
12/31/2021
Fr
2021/52
8188
01/01/2022
Sa
2021/52
8189
01/02/2022
So
2021/53
8190
01/03/2022
Mo
2021/53
8191
01/04/2022
Di
2021/53
8192
01/05/2022
Mi
2021/53
8193
01/06/2022
Do
2021/53
8194
01/07/2022
Fr
2021/53
8195
01/08/2022
Sa
2022/01
8196
01/09/2022
So
2022/02
8197
01/10/2022
Mo
2022/02
8198
01/11/2022
Di
2022/02
8199
01/12/2022
Mi
2022/02
8200
01/13/2022
Do
2022/02
8201
01/14/2022
Fr
2022/02
Da eine period_no von -1 als Versatzargument in der Funktion weekname() verwendet wurde, identifiziert die Funktion zuerst die Woche, in der die Transaktionen stattfanden. Dann geht sie eine Woche zurück und identifiziert die erste Millisekunde dieser Woche.
Transaktion 8192 fand am 5. Januar 2022 statt. Die Funktion weekname() sucht eine Woche vorher, 30. Dezember 2021, und gibt die Wochennummer und das Jahr für dieses Datum zurück – 2021/53.
Beispiel 3 – first_week_day
Übersicht
Es werden derselbe Datensatz und dasselbe Szenario wie im ersten Beispiel verwendet.
In diesem Beispiel soll aber laut der Unternehmensrichtlinie die Arbeitswoche am Dienstag beginnen.
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in eine neue Registerkarte ein.
Ladeskript
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
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:
id
date
week_day
week_number
Ergebnistabelle
id
date
week_day
week_number
8183
12/27/2021
Mo
2021/52
8184
12/28/2021
Di
2021/53
8185
12/29/2021
Mi
2021/53
8186
12/30/2021
Do
2021/53
8187
12/31/2021
Fr
2021/53
8188
01/01/2022
Sa
2022/01
8189
01/02/2022
So
2022/01
8190
01/03/2022
Mo
2022/01
8191
01/04/2022
Di
2022/02
8192
01/05/2022
Mi
2022/02
8193
01/06/2022
Do
2022/02
8194
01/07/2022
Fr
2022/02
8195
01/08/2022
Sa
2022/02
8196
01/09/2022
So
2022/02
8197
01/10/2022
Mo
2022/02
8198
01/11/2022
Di
2022/03
8199
01/12/2022
Mi
2022/03
8200
01/13/2022
Do
2022/03
8201
01/14/2022
Fr
2022/03
Da das Argument first_week_date von 1 in der Funktion weekname() verwendet wird, nutzt sie Dienstag als ersten Tag der Woche. Somit bestimmt die Funktion, dass Woche 53 im Jahr 2021 am Dienstag, den 28. Dezember beginnt, und da unvollständige Wochen verwendet werden, beginnt Woche 1 am 1. Januar 2022 und endet in der letzten Millisekunde von Montag, 3. Januar 2022.
Transaktion 8192 fand am 5. Januar 2022 statt. Wenn also ein Parameter first_week_day von Dienstag verwendet wird, gibt die Funktion weekname() den Wert 2022/02 für das Feld „week_number“ zurück.
Beispiel 4 – Diagrammobjektbeispiel
Übersicht
Es werden derselbe Datensatz und dasselbe Szenario wie im ersten Beispiel verwendet.
In diesem Beispiel wird jedoch der unveränderte Datensatz in die Anwendung geladen. Die Berechnung, die die Jahreszahl für die Woche zurückgibt, in der die Transaktionen stattfanden, wird als Kennzahl in einem Diagrammobjekt der Anwendung erstellt.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
id
date
=week_day (date)
Um den Start der Woche zu berechnen, in dem eine Transaktion stattfindet, erstellen Sie die folgende Kennzahl:
=weekname(date)
Ergebnistabelle
id
date
=weekday(date)
=weekname(date)
8183
12/27/2021
Mo
2021/53
8184
12/28/2021
Di
2021/53
8185
12/29/2021
Mi
2021/53
8186
12/30/2021
Do
2021/53
8187
12/31/2021
Fr
2021/53
8188
01/01/2022
Sa
2022/01
8189
01/02/2022
So
2022/02
8190
01/03/2022
Mo
2022/02
8191
01/04/2022
Di
2022/02
8192
01/05/2022
Mi
2022/02
8193
01/06/2022
Do
2022/02
8194
01/07/2022
Fr
2022/02
8195
01/08/2022
Sa
2022/02
8196
01/09/2022
So
2022/03
8197
01/10/2022
Mo
2022/03
8198
01/11/2022
Di
2022/03
8199
01/12/2022
Mi
2022/03
8200
01/13/2022
Do
2022/03
8201
01/14/2022
Fr
2022/03
Das Feld „week_number“ wird als Kennzahl im Diagrammobjekt erstellt, indem die Funktion weekname() verwendet und das Datumsfeld als Argument der Funktion übergeben wird.
Die Funktion weekname() identifiziert zunächst, in welche Woche der Datumswert fällt, und gibt die Wochennummernzählung und das Jahr zurück, in denen die Transaktion stattfindet.
Die Systemvariable FirstWeekDay legt Sonntag als den ersten Tag der Woche fest. Die Systemvariable BrokenWeeks legt für die Anwendung die Verwendung von unvollständigen Wochen fest, Woche 1 beginnt also am 1. Januar.
Da die Anwendung unvollständige Wochen verwendet und der erste Wochentag Sonntag ist, geben Transaktionen vom 2. bis zum 8. Januar den Wert „2022/02“ (Woche 2 im Jahr 2022) zurück. Sie sehen, dass die Transaktion 8192 am 5. Januar stattfand und den Wert „2022/02“ für das Feld „week_number“ zurückgibt.
Beispiel 5 – Szenario
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz, der eine Reihe von Transaktionen für die letzte Woche in 2019 und die ersten beiden Wochen in 2020 enthält, wird in eine Tabelle namens „Transactions“ geladen.
Die Systemvariable BrokenWeeks, die auf 0 festgelegt ist.
Die Systemvariable ReferenceDay, die auf 2 festgelegt ist.
Die Systemvariable DateFormat, die auf das Format MM/DD/YYYY festgelegt ist.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle.
Erstellen Sie eine berechnete Dimension anhand der folgenden Formel:
=weekname(date)
Erstellen Sie die folgende Aggregierungskennzahl, um den Gesamtumsatz zu berechnen:
=sum(amount)
Legen Sie das Zahlenformat der Kennzahl auf Währung fest.
Ergebnistabelle
weekname(date)
=sum(amount)
2019/52
$125.69
2020/01
$346.51
2020/02
$347.57
2020/03
$122.01
Um die Ergebnisse der Verwendung der Funktion „weekname()“ in diesem Szenario zu zeigen, fügen Sie folgendes Feld als Dimension hinzu:
date
Ergebnistabelle mit Datumsfeld
weekname(date)
date
=sum(amount)
2019/52
12/27/2019
$58.27
2019/52
12/28/2019
$67.42
2020/01
12/29/2019
$23.80
2020/01
12/30/2019
$82.06
2020/01
12/31/2019
$40.56
2020/01
01/01/2020
$37.23
2020/01
01/02/2020
$17.17
2020/01
01/03/2020
$88.27
2020/01
01/04/2020
$57.42
2020/02
01/05/2020
$53.80
2020/02
01/06/2020
$82.06
2020/02
01/07/2020
$40.56
2020/02
01/08/2020
$53.67
2020/02
01/09/2020
$26.63
2020/02
01/10/2020
$72.48
2020/02
01/11/2020
$18.37
2020/03
01/12/2020
$45.26
2020/03
01/13/2020
$58.23
2020/03
01/14/2020
$18.52
Da die Anwendung vollständige Wochen verwendet und Woche 1 aufgrund der Systemvariablen ReferenceDay mindestens zwei Tage im Januar benötigt, enthält Woche 1 für 2020 Transaktionen vom 29. Dezember 2019.
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!