Diese Funktion liefert die Kalenderwoche als Ganzzahl gemäß ISO 8601. Die Kalenderwoche berechnet sich durch die Datumsinterpretation der Formel entsprechend dem Standardformat.
Die Wochenzählung beginnt am 1. Januar (dies liegt daran, dass Qlik Sense standardmäßig auf die Verwendung gestückelter Wochen festgelegt ist). Die erste Woche endet am Tag vor der Systemvariablen FirstWeekDay, unabhängig davon, wie viele Tage in dieser Woche verstrichen sind. Die Systemvariable FirstWeekDay kann innerhalb der Funktion week() durch das Argument first_week_day überschrieben werden.
Die Funktion week() bietet auch die Möglichkeit, über das Argument broken_weeks anzugeben, ob gestückelte oder nicht gestückelte Wochen verwendet werden. Wenn die Funktionalität mit gestückelten Wochen verwendet wird, muss Woche 1 eine bestimmte Zahl Tage im Januar aufweisen, wie in der Systemvariablen ReferenceDay definiert. Daher kann Woche 1 unter Umständen im Dezember beginnen, bzw. die Wochen 52 oder 53 können bis in den Januar reichen. Schließlich ermöglicht das Argument reference_day es der Funktion, die Systemvariable ReferenceDay zu überschreiben.
Anders als die Funktion weekname() gibt die Funktion week() nicht auch den Jahreswert zurück. Dadurch können Aggregierungen Wochen über Jahre hinweg vergleichen.
Es gibt vier Argumente, die in dieser Funktion verwendet werden können.
Argument 1: timestamp
Dies ist das Datum zur Auswertung als Zeitstempel bzw. als Formel, die als Zeitstempel aufgelöst wird, um z. B. „2012-10-12“ zu konvertieren.
Argument 2: first_week_day
Wenn Sie first_week_day nicht angeben, wird der Wert der Variablen FirstWeekDay als erster Wochentag verwendet.
Wenn Sie einen anderen Tag als ersten Wochentag verwenden möchten, stellen Sie first_week_day folgendermaßen ein:
0 für Montag
1 für Dienstag
2 für Mittwoch
3 für Donnerstag
4 für Freitag
5 für Samstag
6 für Sonntag
Die von der Funktion gelieferte ganze Zahl nutzt nun den ersten Wochentag, den Sie mit first_week_day festlegen.
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.
Zum Festlegen anderer Referenztage können die folgenden Werte verwendet werden:
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.
Zudem wird die Funktion week() ausgewählt, wenn Sie über mehrere Jahre hinweg vergleichen möchten. Anhand der Funktion week() kann der Benutzer seine eigene Kombination dieser Variablen erstellen, die bei Verwendung der Funktion eingesetzt werden.
Diese Dimensionen können entweder im Ladeskript erstellt werden, indem die Funktion zum Erstellen eines Felds in einer Master-Kalender-Tabelle verwendet wird, oder sie können direkt in einem Diagramm als berechnete Dimensionen verwendet werden.
Funktionsbeispiele
Beispiel
Ergebnis
week(
'10/12/2012')
Gibt 41 zurück.
week(
'35648')
Gibt 32 zurück, da 35648 = 08/06/1997.
week('10/12/2012', 0, 1)
Gibt 42 zurück.
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 – Standardsystemvariablen
Ü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 2021 und die ersten beiden Wochen in 2022 enthält, der in eine Tabelle namens Transactions geladen wird
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 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 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 Parameterbroken_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!