yearend - script- en diagramfunctie
Deze functie retourneert een waarde die overeenkomt met een tijdstempel van de laatste milliseconde van de laatste dag van het jaar dat date bevat. De standaarduitvoernotatie is de DateFormat die is ingesteld in het script.
Syntaxis:
YearEnd( date[, period_no[, first_month_of_year = 1]])
Met andere woorden, de functie yearend() bepaalt in welk jaar de datum valt. Het retourneert vervolgens een tijdstempel, in datumnotatie, voor de laatste milliseconde van dat jaar. De eerste maand van het jaar is standaard januari. U kunt echter ook wijzigen welke maand als eerste wordt ingesteld met behulp van het argument first_month_of_year in de functie yearend() te gebruiken.
Wanneer gebruiken
De functie yearend() wordt gebruikt als onderdeel van een uitdrukking als u wilt dat in de berekening een deel van het jaar wordt gebruikt dat nog niet heeft plaatsgevonden. Bijvoorbeeld als u de totale rente wilt berekenen die nog niet is berekend gedurende het jaar.
Retourgegevenstypen: dual
Argument | Beschrijving |
---|---|
date | De te evalueren datum of tijdstempel. |
period_no | period_no is een geheel getal, waarbij de waarde 0 het jaar aangeeft dat date bevat. Negatieve waarden in period_no geven voorgaande jaren aan en positieve waarden geven volgende jaren aan. |
first_month_of_year | Als u wilt werken met (boek)jaren die niet in januari beginnen, geeft u een waarde op tussen 2 en 12 in first_month_of_year. |
U kunt de volgende waarden gebruiken om de eerste maand van het jaar in te stellen in het argument first_month_of_year:
Month | Waarde |
---|---|
Februari | 2 |
Maart | 3 |
April | 4 |
May | 5 |
Juni | 6 |
Juli | 7 |
Augustus | 8 |
September | 9 |
Oktober | 10 |
November | 11 |
December | 12 |
Landinstellingen
Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. De datumopmaak wordt opgegeven in de opdracht SET DateFormat in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden.
Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Voorbeeld | Resultaat |
---|---|
yearend('10/19/2001') | Returns 12/31/2001 23:59:59. |
yearend('10/19/2001', -1) | Returns 12/31/2000 23:59:59. |
yearend('10/19/2001', 0, 4) | Returns 03/31/2002 23:59:59. |
Voorbeeld 1 – geen aanvullende argumenten
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensset met een set transacties tussen 2020 en 2022 wordt geladen in een tabel met de naam 'Transactions'.
-
Het datumveld is opgegeven in de systeemvariabele DateFormat, indeling (MM/DD/YYYY).
-
Een voorgaande load-instructie die het volgende bevat:
-
Functie yearend() die is ingesteld als het veld year_end.
-
Functie Timestamp() die is ingesteld als het veld year_end_timestamp.
-
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 P.M |
8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
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 |
Het veld 'year_end' wordt gemaakt in de voorafgaande load-instructie met behulp van de functie yearend() en geeft het datumveld door als het argument van de functie.
De functie yearend() identificeert aanvankelijk in welk jaar de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van dat jaar.
Transactie 8199 vond plaats op 23 april 2021. De functie yearend() retourneert de laatste milliseconde van dat jaar, namelijk 31 december om 11:59:59 P.M.
Voorbeeld 2 – period_no
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is het echter de taak om een veld te maken, 'previous_year_end', dat de tijdstempel van de einddatum van het jaar voorafgaand aan het jaar waarin de transactie plaatsvond, retourneert.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 P.M |
8197 | 02/03/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8198 | 03/17/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8199 | 04/23/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8200 | 05/04/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8201 | 06/30/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8202 | 07/26/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8203 | 12/27/2021 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
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 |
Omdat een period_no van -1 werd gebruikt als het offset-argument in de functie yearend(), identificeert de functie eerst het jaar waarin de transacties plaatsvinden. Het kijkt dan een jaar eerder en identificeert de laatste milliseconde van dat jaar.
Transactie 8199 vindt plaats op 23 april 2021. De functie yearend() retourneert de laatste milliseconde van het voorgaande jaar, 31 december 2020 om 11:59:59 PM, voor het veld ‘previous_year_end’.
Voorbeeld 3 – first_month_of_year
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is het bedrijfsbeleid echter dat het jaar op 1 april begint.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 |
Omdat het argument first_month_of_year van 4 wordt gebruikt in de functie yearend(), stelt het de eerste dag van het jaar in op 1 april en de laatste dag van het jaar op 31 maart.
Transactie 8199 vindt plaats op 23 april 2021. Omdat de functie yearend() het begin van het jaar instelt op 1 april, wordt 31 maart 2022 geretourneerd als de waarde 'year_end' voor de transactie.
Voorbeeld 4 – diagramobjectvoorbeeld
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is de gegevensverzameling echter niet gewijzigd en wordt in de applicatie geladen. De berekening die een einddatumtijdstempel retourneert van het jaar waarin de transactie plaatsvond is gemaakt als meting in een diagramobject van de toepassing.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
Maak de volgende metingen om te berekenen in welk jaar een transactie plaatsvond:
-
=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 P.M |
8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 P.M |
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 |
De meting 'end_of_year' wordt gemaakt in het diagramobject met behulp van de functie yearend() en geeft het veld door als het argument van de functie.
De functie yearend() identificeert aanvankelijk in welk jaar de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van dat jaar.
Transactie 8199 vindt plaats op 23 april 2021. De functie yearend() retourneert de laatste milliseconde van dat jaar, namelijk 31 december om 11:59:59 P.M.
Voorbeeld 5 – Scenario
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensset wordt geladen in een tabel met de naam 'Employee_Expenses'. De tabel bevat de volgende velden:
-
werknemers-id's
-
naam werknemer
-
gemiddelde dagelijkse onkostendeclaraties van elke werknemer
-
De eindgebruiker wil graag een diagramobject dat per werknemer-id en werknemernaam de geschatte nog te maken onkostendeclaraties voor de rest van het jaar weergeeft. Het boekjaar begint in januari.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
employee_id
-
employee_name
Maak de volgende meting om de verwachte onkostendeclaraties te berekenen:
=(yearend(today(1))-today(1))*avg_daily_claim
Stel de Getalnotatie van de meting in op Geld.
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 |
Door de datum van vandaag als enig argument te gebruiken, retourneert de functie yearend() de einddatum van het huidige jaar. Door vervolgens de datum van vandaag af te trekken van de einddatum van het jaar, retourneert de uitdrukking het aantal resterende dagen in dit jaar.
Deze waarde wordt vervolgens vermenigvuldigd met de gemiddelde dagelijkse onkostendeclaratie van elke werknemer om de geschatte waarde te berekenen van de declaraties die elke werknemer naar verwachting in het resterende jaar zal indienen.