Legt den Tag fest, an dem die Woche beginnt. Ist nichts definiert, wird der Wert der VariablenFirstWeekDay 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.
Die Funktion week() bestimmt, in welche Woche das Datum fällt, und gibt die Wochennummer zurück.
In Qlik Sense werden die regionalen Einstellungen bei der Erstellung der App abgerufen, und die entsprechenden Einstellungen werden im Skript als Umgebungsvariablen gespeichert. Sie werden zur Bestimmung der Wochennummer verwendet.
Das bedeutet, dass die meisten europäischen App-Entwickler die folgenden Umgebungsvariablen gemäß der ISO 8601-Definition erhalten:
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; // Use unbroken weeks
Set ReferenceDay =4; // Jan 4th is always in week 1
Ein nordamerikanischer App-Entwickler erhält oft die folgenden Umgebungsvariablen:
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; // Use broken weeks
Set ReferenceDay =1; // Jan 1st is always in week 1
Der erste Tag der Woche wird durch die Systemvariable FirstWeekDay bestimmt. Sie können auch den ersten Tag der Woche ändern, indem Sie das Argument first_week_day in der Funktion week() verwenden.
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 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 Umgebungsvariablen FirstWeekDay und ReferenceDay verwenden.
Verwendung
Die Funktion The week() ist nützlich, wenn Sie Aggregierungen nach Wochen vergleichen möchten. Sie kann beispielsweise verwendet werden, wenn Sie den Gesamtumsatz von Produkten nach Woche anzeigen möchten. Die Funktion week() wird anstelle von weekname() gewählt, wenn der Benutzer möchte, dass die Berechnung nicht notwendigerweise die Systemvariablen BrokenWeeks, FirstWeekDay oder ReferenceDay der Anwendung verwendet.
Das ist beispielsweise der Fall, wenn Sie den Gesamtumsatz von Produkten nach Woche anzeigen möchten.
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 gestückelte Wochen verwendet, kann Woche 1 weniger als sieben Tage enthalten.
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 DateFormat= 'MM/DD/YYYY';
Set FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Funktionsbeispiele
Beispiel
Ergebnis
week('12/28/2021')
Gibt 52 zurück.
week(44614)
Gibt 8 zurück, da dies die Seriennummer für 02/22/2022 ist.
week('01/03/2021')
Gibt 53 zurück.
week('01/03/2021',6)
Liefert 1.
Beispiel 1 – Standardsystemvariablen
Ü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.
Datumsfeld, das im Format der Systemvariablen DateFormat (MM/TT/JJJJ) bereitgestellt wird
Erstellung eines Felds week_number, das das Jahr und die Nummer der Woche, in der die Transaktionen stattfanden, zurückgibt
Erstellung eines Felds namens week_day, das den Wochentagswert für jedes Transaktionsdatum zurückgibt
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(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
53
8184
12/28/2021
Di
53
8185
12/29/2021
Mi
53
8186
12/30/2021
Do
53
8187
12/31/2021
Fr
53
8188
01/01/2022
Sa
1
8189
01/02/2022
So
2
8190
01/03/2022
Mo
2
8191
01/04/2022
Di
2
8192
01/05/2022
Mi
2
8193
01/06/2022
Do
2
8194
01/07/2022
Fr
2
8195
01/08/2022
Sa
2
8196
01/09/2022
So
3
8197
01/10/2022
Mo
3
8198
01/11/2022
Di
3
8199
01/12/2022
Mi
3
8200
01/13/2022
Do
3
8201
01/14/2022
Fr
3
Das Feld week_number wird im vorangehenden load-Befehl erstellt, indem die Funktion week() verwendet und das Feld date als Argument der Funktion übergeben wird.
Es werden keine anderen Parameter an die Funktion übergeben, und daher gelten die folgenden, die Funktion week() betreffenden Standardvariablen:
BrokenWeeks: Die Wochenzählung beginnt am 1. Januar.
FirstWeekDay: Der erste Tag der Woche ist Sonntag.
Da die Anwendung die Standardsystemvariable BrokenWeeks verwendet, beginnt Woche 1 am 1. Januar, einem Samstag.
Aufgrund der Standardsystemvariablen FirstWeekDay beginnen die Wochen an einem Sonntag. Der erste Sonntag nach dem 1. Januar ist der 2. Januar. Also beginnt an diesem Tag Woche 2.
Beispiel 2 – first_week_day
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Es wird ein Feld week_number erstellt, das das Jahr und die Nummer der Woche, in der die Transaktionen stattfanden, zurückgibt.
Es wird ein Feld namens week_day erstellt, dass den Wochentagswert für jedes Transaktionsdatum zurückgibt.
In diesem Beispiel soll der Start der Woche auf Dienstag festgelegt werden.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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
52
8184
12/28/2021
Di
53
8185
12/29/2021
Mi
53
8186
12/30/2021
Do
53
8187
12/31/2021
Fr
53
8188
01/01/2022
Sa
1
8189
01/02/2022
So
1
8190
01/03/2022
Mo
1
8191
01/04/2022
Di
2
8192
01/05/2022
Mi
2
8193
01/06/2022
Do
2
8194
01/07/2022
Fr
2
8195
01/08/2022
Sa
2
8196
01/09/2022
So
2
8197
01/10/2022
Mo
2
8198
01/11/2022
Di
3
8199
01/12/2022
Mi
3
8200
01/13/2022
Do
3
8201
01/14/2022
Fr
3
Die Anwendung verwendet immer noch gestückelte Wochen. Das Argument first_week_day wurde jedoch in der Funktion week() auf 1 festgelegt. Damit wird der erste Tag der Woche auf einen Dienstag festgelegt.
Die Anwendung verwendet die Standardsystemvariable BrokenWeeks, daher beginnt Woche 1 am 1. Januar, einem Samstag.
Das Argument first_week_day der Funktion week() legt den ersten Wochentag auf einen Dienstag fest. Daher beginnt Woche 53 am 28. Dezember 2021.
Da aber die Funktion immer noch gestückelte Wochen verwendet, ist Woche 1 nur zwei Tage lang, da der erste Dienstag nach dem 1. Januar am 3. Januar liegt.
Beispiel 3 – unbroken_weeks
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript verwendet den gleichen Datensatz und das gleiche Szenario wie das erste Beispiel.
In diesem Beispiel werden nicht gestückelte Wochen verwendet.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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
52
8184
12/28/2021
Di
52
8185
12/29/2021
Mi
52
8186
12/30/2021
Do
52
8187
12/31/2021
Fr
52
8188
01/01/2022
Sa
52
8189
01/02/2022
So
1
8190
01/03/2022
Mo
1
8191
01/04/2022
Di
1
8192
01/05/2022
Mi
1
8193
01/06/2022
Do
1
8194
01/07/2022
Fr
1
8195
01/08/2022
Sa
1
8196
01/09/2022
So
2
8197
01/10/2022
Mo
2
8198
01/11/2022
Di
2
8199
01/12/2022
Mi
2
8200
01/13/2022
Do
2
8201
01/14/2022
Fr
2
Der Parameter „first_week_date“ wird auf 1 festgelegt, wodurch Dienstag zum ersten Tag der Woche wird. Der Parameter „broken_weeks“ wird auf 0 festgelegt, was erzwingt, dass die Funktion nicht gestückelte Wochen verwendet. Im dritten Parameter wird abschließend „reference_day“ auf 2 festgelegt.
Der Parameter first_week_date wird auf 6 festgelegt, wodurch Sonntag zum ersten Tag der Woche wird. Der Parameter broken_weeks wird auf 0 festgelegt, was erzwingt, dass die Funktion nicht gestückelte Wochen verwendet.
Wenn ungestückelte Wochen verwendet werden, beginnt Woche 1 nicht notwendigerweise am 1. Januar; es ist vielmehr erforderlich, dass sie mindestens vier Tage umfasst. Daher endet im Datensatz Woche 52 am Samstag, den 1. Januar 2022. Woche 1 beginnt dann an der Systemvariablen FirstWeekDay. Das ist Sonntag, der 2. Januar. Diese Woche endet am darauffolgenden Samstag, dem 8. Januar.
Beispiel 4 – reference_day
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Derselbe Datensatz und dasselbe Szenario wie im dritten Beispiel.
Es wird ein Feld week_number erstellt, das das Jahr und die Nummer der Woche, in der die Transaktionen stattfanden, zurückgibt.
Es wird ein Feld namens week_day erstellt, dass den Wochentagswert für jedes Transaktionsdatum zurückgibt.
Zusätzlich müssen die folgenden Bedingungen erfüllt sein:
Die Arbeitswoche beginnt an einem Dienstag.
Das Unternehmen verwendet nicht gestückelte Wochen.
Der Wert für reference_day ist 2. Die Mindestanzahl Tage im Januar in Woche 1 beträgt also 2.
Ladeskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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
52
8184
12/28/2021
Di
1
8185
12/29/2021
Mi
1
8186
12/30/2021
Do
1
8187
12/31/2021
Fr
1
8188
01/01/2022
Sa
1
8189
01/02/2022
So
1
8190
01/03/2022
Mo
1
8191
01/04/2022
Di
2
8192
01/05/2022
Mi
2
8193
01/06/2022
Do
2
8194
01/07/2022
Fr
2
8195
01/08/2022
Sa
2
8196
01/09/2022
So
2
8197
01/10/2022
Mo
2
8198
01/11/2022
Di
3
8199
01/12/2022
Mi
3
8200
01/13/2022
Do
3
8201
01/14/2022
Fr
3
Der Parameter first_week_date wird auf 1 festgelegt, wodurch Dienstag zum ersten Tag der Woche wird. Der Parameter broken_weeks wird auf 0 festgelegt, was erzwingt, dass die Funktion nicht gestückelte Wochen verwendet. Im dritten Parameter wird abschließend der Parameter reference_day auf 2 festgelegt.
Da die Funktion nicht gestückelte Wochen verwendet und ein Wert für reference_day von 2 als Parameter verwendet wird, muss Woche 1 nur zwei Tage im Januar enthalten. Da der erste Wochentag ein Dienstag ist, beginnt Woche 1 am 28. Dezember 2021 und endet am Montag, dem 3. Januar 2022.
Beispiel 5 – Diagrammobjektbeispiel
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript verwendet den gleichen Datensatz und das gleiche Szenario wie das erste Beispiel.
In diesem Beispiel wird jedoch der unveränderte Datensatz in die Anwendung geladen. Die Berechnung, die die Wochennummer zurückgibt, wird als Kennzahl in einem Diagrammobjekt erstellt.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle.
Fügen Sie die folgenden Felder als Dimensionen hinzu:
id
date
Erstellen Sie dann die folgende Kennzahl:
=week (date)
Erstellen Sie eine Kennzahl , week_day, um den Wochentagwert für jedes Transaktionsdatum anzuzeigen:
=weekday(date)
Ergebnistabelle
id
date
=week(date)
=weekday(date)
8183
12/27/2021
53
Mo
8184
12/28/2021
53
Di
8185
12/29/2021
53
Mi
8186
12/30/2021
53
Do
8187
12/31/2021
53
Fr
8188
01/01/2022
1
Sa
8189
01/02/2022
2
So
8190
01/03/2022
2
Mo
8191
01/04/2022
2
Di
8192
01/05/2022
2
Mi
8193
01/06/2022
2
Do
8194
01/07/2022
2
Fr
8195
01/08/2022
2
Sa
8196
01/09/2022
3
So
8197
01/10/2022
3
Mo
8198
01/11/2022
3
Di
8199
01/12/2022
3
Mi
8200
01/13/2022
3
Do
8201
01/14/2022
3
Fr
Das Feld week_number wird in der vorangehenden load-Anweisung erstellt, indem die Funktion week() verwendet und das Feld date als Argument der Funktion übergeben wird.
Es werden keine anderen Parameter an die Funktion übergeben, und daher gelten die folgenden, die Funktion week() betreffenden Standardvariablen:
BrokenWeeks: Die Wochenzählung beginnt am 1. Januar.
FirstWeekDay: Der erste Tag der Woche ist Sonntag.
Da die Anwendung die Standardsystemvariable BrokenWeeks verwendet, beginnt Woche 1 am 1. Januar, einem Samstag.
Aufgrund der Standardsystemvariablen FirstWeekDay beginnen die Wochen an einem Sonntag. Der erste Sonntag nach dem 1. Januar ist der 2. Januar. Also beginnt an diesem Tag Woche 2.
Beispiel 6 – Szenario
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Datensatz mit einer Reihe von Transaktionen für die letzte Woche in 2019 und die ersten beiden Wochen in 2020, der in eine Tabelle namens Transactions geladen wird
Datumsfeld, das im Format der Systemvariablen DateFormat (MM/TT/JJJJ) bereitgestellt wird
Die Anwendung verwendet in ihrem Dashboard hauptsächlich gestückelte Wochen. Der Endbenutzer möchte aber ein Diagrammobjekt, das den Gesamtumsatz nach Woche für nicht gestückelte Wochen darstellt. Der Referenztag soll der 2. Januar sein, und die Wochen sollen an einem Dienstag beginnen. Dies ist selbst dann möglich, wenn diese Dimension nicht im Datenmodell verfügbar ist. In diesem Fall wird die Funktion week() als berechnete Dimension im Diagramm verwendet.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle.
Erstellen Sie die folgende berechnete Dimension:
=week(date)
Erstellen Sie dann die folgende Aggregierungskennzahl:
=sum(amount)
Legen Sie das Zahlenformat der Kennzahl auf Währung fest.
Wählen Sie das Menü Sortieren aus und entfernen Sie die benutzerdefinierte Sortierung für die berechnete Dimension.
Heben Sie die Auswahl der Optionen Numerisch sortieren und Alphabetisch sortieren auf.
Ergebnistabelle
week(date)
sum(amount)
52
$125.69
53
$146.42
1
$200.09
2
$347.57
3
$122.01
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!