yearend - Skript- und Diagrammfunktion
Diese Funktion liefert den Zeitstempel der letzten Millisekunde des letzten Tages des Jahres, in dem date liegt. Das Ergebnis wird entsprechend dem im Skript definierten DateFormat formatiert.
Syntax:
YearEnd( date[, period_no[, first_month_of_year = 1]])
Die Funktion yearend() legt also fest, in welches Jahr das Datum fällt. Sie gibt dann einen Zeitstempel im Datumsformat für die letzte Millisekunde dieses Jahres zurück. Der erste Monat des Jahres ist standardmäßig der Januar. Sie können aber ändern, welcher Monat als erster festgelegt wird, indem Sie das Argument first_month_of_year in der Funktion yearend() verwenden.
Verwendung
Die Funktion yearend() wird als Teil einer Formel verwendet, wenn in der Berechnung der Teil des Jahres verwendet werden soll, der noch nicht eingetreten ist. Beispiel: Sie möchten die gesamten, während des Jahres noch nicht fällig gewordenen Zinsen berechnen.
Rückgabe Datentyp: dual
Argument | Beschreibung |
---|---|
date | Datum oder Zeitstempel für die Evaluierung. |
period_no | period_no ist eine ganze Zahl, wobei 0 für das Jahr steht, das date enthält. Negative Werte von period_no stehen für vorangehende, positive Werte für nachfolgende Jahre. |
first_month_of_year | Wenn Sie mit abweichenden Geschäftsjahren arbeiten möchten, definieren Sie mit einer Zahl zwischen 2 und 12 für first_month_of_year einen anderen Startmonat. |
Sie können die folgenden Werte verwenden, um den ersten Monat des Jahres im Argument first_month_of_year festzulegen.
Monat | Wert |
---|---|
Februar | 2 |
März | 3 |
April | 4 |
Mai | 5 |
Juni | 6 |
Juli | 7 |
August | 8 |
September | 9 |
Oktober | 10 |
November | 11 |
Dezember | 12 |
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 |
---|---|
yearend('10/19/2001') | Liefert 12/31/2001 23:59:59. |
yearend('10/19/2001', -1) | Liefert 12/31/2000 23:59:59. |
yearend('10/19/2001', 0, 4) | Liefert 03/31/2002 23:59:59. |
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, der eine Reihe von Transaktionen zwischen 2020 und 2022 enthält, wird in eine Tabelle namens „Transactions“ geladen.
-
Das Datumsfeld wurde im Format DateFormat der Systemvariablen (MM/DD/YYYY) bereitgestellt.
-
Ein vorangehender load-Befehl, der Folgendes enthält:
-
Funktion yearend(), die als Feld year_end festgelegt ist.
-
Funktion Timestamp(), die als Feld year_end_timestamp festgelegt ist.
-
Ladeskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearend(date) as year_end,
timestamp(yearend(date)) as year_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,01/13/2020,37.23
8189,02/26/2020,17.17
8190,03/27/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/05/2020,87.21
8196,01/22/2021,95.93
8197,02/03/2021,45.89
8198,03/17/2021,36.23
8199,04/23/2021,25.66
8200,05/04/2021,82.77
8201,06/30/2021,69.98
8202,07/26/2021,76.11
8203,12/27/2021,25.12
8204,06/06/2022,46.23
8205,07/18/2022,84.21
8206,11/14/2022,96.24
8207,12/12/2022,67.67
];
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
-
year_end
-
year_end_timestamp
id | date | year_end | year_end_timestamp |
---|---|---|---|
8188 | 01/13/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8196 | 01/22/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8197 | 02/03/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8198 | 03/17/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8199 | 04/23/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8200 | 05/04/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8201 | 06/30/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8202 | 07/26/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8203 | 12/27/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8204 | 06/06/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8205 | 07/18/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8206 | 11/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 12/12/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Das Feld „year_end“ wird in der vorangehenden load-Anweisung erstellt, indem die Funktion yearend() verwendet und das Datumsfeld als Argument der Funktion übergeben wird.
Die Funktion yearend() identifiziert zuerst, in welches Jahr der Datumswert fällt, und gibt einen Zeitstempel für die letzte Millisekunde dieses Jahres zurück.
Transaktion 8199 fand am 23. April 2021 statt. Die Funktion yearend() gibt die letzte Millisekunde dieses Jahres zurück, also den 31. Dezember um 11:59:59 PM.
Beispiel 2 – period_no
Übersicht
Es werden derselbe Datenatz und dasselbe Szenario wie im ersten Beispiel verwendet.
In diesem Beispiel besteht aber die Aufgabe darin, ein Feld „previous_year_end“ zu erstellen, das den Enddatumsstempel des Jahres vor dem Jahr zurückgibt, in dem die Transaktion stattfand.
Ladeskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearend(date,-1) as previous_year_end,
timestamp(yearend(date,-1)) as previous_year_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,01/13/2020,37.23
8189,02/26/2020,17.17
8190,03/27/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/05/2020,87.21
8196,01/22/2021,95.93
8197,02/03/2021,45.89
8198,03/17/2021,36.23
8199,04/23/2021,25.66
8200,05/04/2021,82.77
8201,06/30/2021,69.98
8202,07/26/2021,76.11
8203,12/27/2021,25.12
8204,06/06/2022,46.23
8205,07/18/2022,84.21
8206,11/14/2022,96.24
8207,12/12/2022,67.67
];
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
-
previous_year_end
-
previous_ year_end_timestamp
id | date | previous_year_end | previous_year_end_timestamp |
---|---|---|---|
8188 | 01/13/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8189 | 02/26/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8190 | 03/27/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8191 | 04/16/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8192 | 05/21/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8193 | 08/14/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8194 | 10/07/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8195 | 12/05/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
8196 | 01/22/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8197 | 02/03/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8198 | 03/17/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8199 | 04/23/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8200 | 05/04/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8201 | 06/30/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8202 | 07/26/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8203 | 12/27/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8204 | 06/06/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8205 | 07/18/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8206 | 11/14/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8207 | 12/12/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
Da eine period_no von -1 als Versatzargument in der Funktion yearend() verwendet wurde, identifiziert die Funktion zuerst das Jahr, in dem die Transaktionen stattfinden. Dann geht sie ein Jahr zurück und identifiziert die letzte Millisekunde dieses Jahres.
Transaktion 8199 findet am 23. April 2021 statt. Die Funktion yearend() gibt die letzte Millisekunde des vorherigen Jahres, also den 31. Dezember 2020 um 11:59:59 PM. für das Feld „previous_year_end“ zurück.
Beispiel 3 – first_month_of_year
Übersicht
Es werden derselbe Datenatz und dasselbe Szenario wie im ersten Beispiel verwendet.
In diesem Beispiel soll aber laut der Unternehmensrichtlinie das Jahr am 1. April beginnen.
Ladeskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearend(date,0,4) as year_end,
timestamp(yearend(date,0,4)) as year_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,01/13/2020,37.23
8189,02/26/2020,17.17
8190,03/27/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/05/2020,87.21
8196,01/22/2021,95.93
8197,02/03/2021,45.89
8198,03/17/2021,36.23
8199,04/23/2021,25.66
8200,05/04/2021,82.77
8201,06/30/2021,69.98
8202,07/26/2021,76.11
8203,12/27/2021,25.12
8204,06/06/2022,46.23
8205,07/18/2022,84.21
8206,11/14/2022,96.24
8207,12/12/2022,67.67
];
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
-
year_end
-
year_end_timestamp
id | date | year_end | year_end_timestamp |
---|---|---|---|
8188 | 01/13/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
8189 | 02/26/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
8190 | 03/27/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
8191 | 04/16/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8192 | 05/21/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8193 | 08/14/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8194 | 10/07/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8195 | 12/05/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8196 | 01/22/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8197 | 02/03/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8198 | 03/17/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
8199 | 04/23/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8200 | 05/04/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8201 | 06/30/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8202 | 07/26/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8203 | 12/27/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8204 | 06/06/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
8205 | 07/18/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
8206 | 11/14/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
8207 | 12/12/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
Da das Argument first_month_of_year von 4 in der Funktion yearend() verwendet wird, legt sie den ersten Tag des Jahres auf den 1. April und den letzten Tag des Jahres auf den 31. März fest.
Transaktion 8199 findet am 23. April 2021 statt. Da die Funktion yearend() den Beginn des Jahres auf den 1. April festlegt, gibt sie den 31. März 2022 als den Wert „year_end“ für die Transaktion 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 den Enddatumzeitstempel für das Jahr zurückgibt, in dem eine Transaktion stattfand, wird als Kennzahl in einem Diagrammobjekt der Anwendung erstellt.
Ladeskript
Transactions:
Load
*
Inline
[
id,date,amount
8188,01/13/2020,37.23
8189,02/26/2020,17.17
8190,03/27/2020,88.27
8191,04/16/2020,57.42
8192,05/21/2020,53.80
8193,08/14/2020,82.06
8194,10/07/2020,40.39
8195,12/05/2020,87.21
8196,01/22/2021,95.93
8197,02/03/2021,45.89
8198,03/17/2021,36.23
8199,04/23/2021,25.66
8200,05/04/2021,82.77
8201,06/30/2021,69.98
8202,07/26/2021,76.11
8203,12/27/2021,25.12
8204,06/06/2022,46.23
8205,07/18/2022,84.21
8206,11/14/2022,96.24
8207,12/12/2022,67.67
];
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
Um zu berechnen, in welchem Jahr eine Transaktion stattfand, erstellen Sie die folgenden Kennzahlen:
-
=yearend(date)
-
=timestamp(yearend(date))
id | date | =yearend(date) | =timestamp(yearend(date)) |
---|---|---|---|
8188 | 01/13/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
8196 | 01/22/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8197 | 02/03/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8198 | 03/17/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8199 | 04/23/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8200 | 05/04/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8201 | 06/30/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8202 | 07/26/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8203 | 12/27/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8204 | 06/06/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8205 | 07/18/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8206 | 11/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 12/12/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Die Kennzahl „end_of_year“ wird im Diagrammobjekt erstellt, indem die Funktion yearend() verwendet und das Feld als Argument der Funktion übergeben wird.
Die Funktion yearend() identifiziert zuerst, in welches Jahr der Datumswert fällt, und gibt einen Zeitstempel für die letzte Millisekunde dieses Jahres zurück.
Transaktion 8199 findet am 23. April 2021 statt. Die Funktion yearend() gibt die letzte Millisekunde dieses Jahres zurück, also den 31. Dezember um 11:59:59 PM.
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 wird in eine Tabelle namens „Employee_Expenses“ geladen. Die Tabelle enthält die folgenden Felder:
-
Mitarbeiter-IDs
-
Mitarbeitername
-
Durchschnittliche tägliche Spesenanträge pro Mitarbeiter
-
Der Endbenutzer möchte ein Diagrammobjekt, das nach Mitarbeiter-ID und Mitarbeitername die geschätzten Spesenanträge anzeigt, die für das restliche Jahr noch anfallen. Das Geschäftsjahr beginnt im Januar.
Ladeskript
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
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:
-
employee_id
-
employee_name
Erstellen Sie die folgende Kennzahl, um die voraussichtlichen Spesenanträge zu berechnen:
=(yearend(today(1))-today(1))*avg_daily_claim
Legen Sie die Zahlenformatierung der Kennzahl auf Währung fest.
employee_id | employee_name | =(yearend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $3240.00 |
183 | Deryck | $2700.00 |
184 | Dexter | $2700.00 |
185 | Sydney | $5832.00 |
186 | Agatha | $3888.00 |
Indem das aktuelle Datum als einziges Argument verwendet wird, gibt die Funktion yearend() das Enddatum des aktuellen Jahres zurück. Dann zieht die Formel das aktuelle Datum vom Jahresenddatum ab und gibt die Anzahl der in diesem Jahr verbleibenden Tage zurück.
Dieser Wert wird dann mit den durchschnittlichen täglichen Spesenanträgen der einzelnen Mitarbeitern multipliziert, um den geschätzten Spesenbetrag pro Mitarbeiter für das verbleibende Jahr zu berechnen.