Diese Funktion liefert den Zeitstempel der ersten Millisekunde des ersten Tags der Kalenderwoche, in der date liegt. Das Ergebnis wird entsprechend dem im Skript definierten DateFormat formatiert.
Die Funktion weekstart() bestimmt, in welche Woche das Datum fällt. Sie gibt dann einen Zeitstempel im Datumsformat für die erste Millisekunde dieser Woche zurück. Der erste Tag der Woche wird durch die UmgebungsvariableFirstWeekDay bestimmt. Dies kann jedoch durch das Argument first_week_day in der Funktion weekstart() überschrieben werden.
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.
Verwendung
Die Funktion weekstart() wird in der Regel als Teil einer Formel verwendet, wenn in der Berechnung der Teil der Woche verwendet werden soll, der bereits verstrichen ist. Beispielsweise kann sie verwendet werden, um den Gesamtlohn zu berechnen, der bisher von den Mitarbeitern in der Woche verdient wurde.
Die folgenden Beispiele nehmen an:
SET FirstWeekDay=0;
Funktionsbeispiele
Beispiel
Ergebnis
weekstart('01/12/2013')
Gibt 01/07/2013 zurück.
weekstart('01/12/2013', -1 )
Gibt 11/31/2012 zurück.
weekstart('01/12/2013', 0, 1)
Gibt 01/08/2013 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. 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.
Wenn Sie ISO-Einstellungen für Wochen und Wochennummern verwenden möchten, müssen Sie Folgendes in das Skript einschließen:
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
Wenn Sie US-Einstellungen verwenden möchten, müssen Sie Folgendes in das Skript einschließen:
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
Die obigen Beispiele führen zu folgenden Ergebnissen für die Funktion weekstart():
Beispiel der Funktion „Weekstart“
Datum
ISO-Wochenstart
US-Wochenstart
Sat 2020 Dec 26
2020-12-21
12/20/2020
Sun 2020 Dec 27
2020-12-21
12/27/2020
Mon 2020 Dec 28
2020-12-28
12/27/2020
Tue 2020 Dec 29
2020-12-28
12/27/2020
Wed 2020 Dec 30
2020-12-28
12/27/2020
Thu 2020 Dec 31
2020-12-28
12/27/2020
Fri 2021 Jan 1
2020-12-28
12/27/2020
Sat 2021 Jan 2
2020-12-28
12/27/2020
Sun 2021 Jan 3
2020-12-28
1/3/2021
Mon 2021 Jan 4
2021-01-04
1/3/2021
Tue 2021 Jan 5
2021-01-04
1/3/2021
InformationshinweisIn der ISO-Spalte beginnt die Woche an Montagen, in der US-Spalte an Sonntagen.
Beispiel 1 – keine zusätzlichen Argumente
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz enthält eine Reihe von Transaktionen für 2022 und wird in eine Tabelle namens Transactions geladen.
Das Datumsfeld wird im Format der Systemvariablen DateFormat (MM/TT/JJJJ) bereitgestellt.
Erstellung eines Felds start_of_week, das den Zeitstempel für den Start der Woche zurückgibt, in der die Transaktionen stattfanden
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
date
start_of_week
start_of_week_timestamp
Ergebnistabelle
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/24/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
Das Feld start_of_week wird im vorangehenden load-Befehl erstellt, indem die Funktion weekstart() verwendet und das Datumsfeld als Argument der Funktion übergeben wird.
Die Funktion weekstart() identifiziert zunächst, in welche Woche der Datumswert fällt, und gibt einen Zeitstempel für die erste Millisekunde dieser Woche zurück.
Transaktion 8191 fand am 5. Februar statt. Die Systemvariable FirstWeekDay legt den ersten Tag der Woche als Sonntag fest. Die Funktion weekstart() identifiziert den ersten Sonntag vor dem 5. Februar – und somit dem Start der Woche – als den 30. Januar. Daher gibt der Wert start_of_week für diese Transaktion die erste Millisekunde dieses Tages zurück, also den 30. Januar um 12:00:00 AM.
Beispiel 2 – period_no
Ü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 ersten Beispiel.
Es wird ein Feld previous_week_start erstellt, das den Zeitstempel für den Start des Quartals vor dem Quartal zurückgibt, in dem die Transaktion stattfand.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
date
previous_week_start
previous_week_start_timestamp
Ergebnistabelle
date
previous_week_start
previous_week_start_timestamp
1/7/2022
12/26/2021
12/26/2021 12:00:00 AM
1/19/2022
01/09/2022
1/9/2022 12:00:00 AM
2/5/2022
01/23/2022
1/23/2022 12:00:00 AM
2/28/2022
02/20/2022
2/20/2022 12:00:00 AM
3/16/2022
03/06/2022
3/6/2022 12:00:00 AM
4/1/2022
03/20/2022
3/20/2022 12:00:00 AM
5/7/2022
04/24/2022
4/24/2022 12:00:00 AM
5/16/2022
05/08/2022
5/8/2022 12:00:00 AM
6/15/2022
06/05/2022
6/5/2022 12:00:00 AM
6/26/2022
06/19/2022
6/19/2022 12:00:00 AM
7/9/2022
06/26/2022
6/26/2022 12:00:00 AM
7/22/2022
07/10/2022
7/10/2022 12:00:00 AM
7/23/2022
07/10/2022
7/10/2022 12:00:00 AM
7/27/2022
07/17/2022
7/17/2022 12:00:00 AM
8/2/2022
07/24/2022
7/24/2022 12:00:00 AM
8/8/2022
07/31/2022
7/31/2022 12:00:00 AM
8/19/2022
08/07/2022
8/7/2022 12:00:00 AM
9/26/2022
09/18/2022
9/18/2022 12:00:00 AM
10/14/2022
10/02/2022
10/2/2022 12:00:00 AM
10/29/2022
10/16/2022
10/16/2022 12:00:00 AM
Da in dieser Instanz eine period_no von -1 als Versatzargument in der Funktion weekstart() 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 8196 fand am 15. Juni statt. Die Funktion weekstart() identifiziert, dass die Woche am 12. Juni beginnt. Daher begann die vorherige Woche am 5. Juni um 12:00:00 AM; dies ist der Wert, der für das Feld previous_week_start zurückgegeben wird.
Beispiel 3 – first_week_day
Ü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 muss jedoch Dienstag als der erste Tag der Arbeitswoche festgelegt werden.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
date
start_of_week
start_of_week_timestamp
Ergebnistabelle
date
start_of_week
start_of_week_timestamp
1/7/2022
01/04/2022
1/4/2022 12:00:00 AM
1/19/2022
01/18/2022
1/18/2022 12:00:00 AM
2/5/2022
02/01/2022
2/1/2022 12:00:00 AM
2/28/2022
02/22/2022
2/22/2022 12:00:00 AM
3/16/2022
03/15/2022
3/15/2022 12:00:00 AM
4/1/2022
03/29/2022
3/29/2022 12:00:00 AM
5/7/2022
05/03/2022
5/3/2022 12:00:00 AM
5/16/2022
05/10/2022
5/10/2022 12:00:00 AM
6/15/2022
06/14/2022
6/14/2022 12:00:00 AM
6/26/2022
06/21/2022
6/21/2022 12:00:00 AM
7/9/2022
07/05/2022
7/5/2022 12:00:00 AM
7/22/2022
07/19/2022
7/19/2022 12:00:00 AM
7/23/2022
07/19/2022
7/19/2022 12:00:00 AM
7/27/2022
07/26/2022
7/26/2022 12:00:00 AM
8/2/2022
08/02/2022
8/2/2022 12:00:00 AM
8/8/2022
08/02/2022
8/2/2022 12:00:00 AM
8/19/2022
08/16/2022
8/16/2022 12:00:00 AM
9/26/2022
09/20/2022
9/20/2022 12:00:00 AM
10/14/2022
10/11/2022
10/11/2022 12:00:00 AM
10/29/2022
10/25/2022
10/25/2022 12:00:00 AM
Da in diesem Fall das Argument first_week_date von 1 in der Funktion weekstart() verwendet wird, legt sie Dienstag als ersten Tag der Woche fest.
Transaktion 8191 fand am 5. Februar statt. Die Funktion weekstart() identifiziert, dass der erste Dienstag vor diesem Datum – und somit der Start der Woche und der zurückgegebene Wert – der 1. Februar um 12:00:00 AM war.
Beispiel 4 – 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 einen Zeitstempel für den Start der Woche zurückgibt, in dem 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 dieses Feld als Dimension hinzu: date.
Um den Start der Woche zu berechnen, in der eine Transaktion stattfindet, erstellen Sie die folgenden Kennzahlen:
=weekstart(date)
=timestamp(weekstart(date))
Ergebnistabelle
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/24/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
Die Kennzahl start_of_week wird im Diagrammobjekt erstellt, indem die Funktion weekstart() verwendet und das Feld date als Argument der Funktion übergeben wird.
Die Funktion weekstart() identifiziert zunächst, in welche Woche der Datumswert fällt, und gibt einen Zeitstempel für die erste Millisekunde dieser Woche zurück.
Transaktion 8191 fand am 5. Februar statt. Die Systemvariable FirstWeekDay legt den ersten Tag der Woche als Sonntag fest. Die Funktion weekstart() identifiziert, dass der erste Sonntag vor dem 5. Februar – und damit der Start der Woche – der 30. Januar war. Daher gibt der Wert für start_of_week dieser Transaktion die erste Millisekunde dieses Tages zurück, also den 30. Januar um 12:00:00 AM.
Beispiel 5 – Szenario
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Datensatz, der in eine Tabelle namens Payroll geladen wird
Daten bestehend aus Mitarbeiter-IDs, Mitarbeiternamen und dem täglich von jedem Mitarbeiter verdienten Lohn
Mitarbeiter beginnen am Montag mit der Arbeit und arbeiten sechs Tage pro Woche. Die Systemvariable FirstWeekDay darf nicht geändert werden.
Der Endbenutzer möchte ein Diagrammobjekt, das nach Mitarbeiter-ID und Mitarbeiternamen den in der Woche bis dato verdienten Lohn anzeigt.
Da die Funktion weekstart() das aktuelle Datum als erstes Argument und 0 als drittes Argument verwendet, wird Montag als der erste Tag der Woche festgelegt und das Startdatum der aktuellen Woche zurückgegeben. Die Formel zieht dieses Ergebnis vom aktuellen Datum ab und gibt dann die Anzahl der Tage zurück, die bisher in der Woche verstrichen sind.
Mit der Bedingung wird dann ausgewertet, ob diese Woche mehr als sechs Tage lang war. Wenn dies der Fall ist, wird die day_rate des Mitarbeiters mit 6 multipliziert. Andernfalls wird die day_rate mit der Anzahl der Tage multipliziert, die bisher in dieser Woche verstrichen sind.
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!