weekname - Skript- und Diagrammfunktion
Diese Funktion liefert den Zeitstempel der ersten Millisekunde der Kalenderwoche, in der date liegt. Das Ergebnis wird als Kombination von Jahr und Wochennummer formatiert.
Syntax:
WeekName(date[, period_no[,first_week_day]])
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 Systemvariable FirstWeekDay bestimmt. Sie können aber auch den ersten Tag der Woche ändern, indem Sie das Argument first_week_day in der Funktion weekname() verwenden.
Standardmäßig verwenden Qlik Sense-Anwendungen unvollständige Wochen (definiert durch die Systemvariable BrokenWeeks). Daher 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.
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
Argument | Beschreibung |
---|---|
date | 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. |
Sie können die folgenden Werte verwenden, um den Tag des Wochenbeginns im Argument first_week_day festzulegen:
Tag | Wert |
---|---|
Montag | 0 |
Dienstag | 1 |
Mittwoch | 2 |
Donnerstag | 3 |
Freitag | 4 |
Samstag | 5 |
Sonntag | 6 |
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 | Ergebnis |
---|---|
weekname('01/12/2013') | Liefert 2013/02. |
weekname('01/12/2013', -1) | Liefert 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.
-
Eine vorangehende load-Anweisung, die 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
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.
Ladeskript
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_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
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
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.
Ladeskript
SET BrokenWeeks=1;
Transactions:
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 (date)
Um den Start der Woche zu berechnen, in dem eine Transaktion stattfindet, erstellen Sie die folgende Kennzahl:
=weekname(date)
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.
Ladeskript
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Ergebnisse
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 Kennzahl, um den Gesamtumsatz zu berechnen:
=sum(amount)
Legen Sie das Zahlenformat der Kennzahl auf Währung fest.
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
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.