quarterend - script- en diagramfunctie
Deze functie retourneert een waarde die overeenkomt met een tijdstempel van de laatste milliseconde van het kwartaal dat date bevat. De standaarduitvoernotatie is de DateFormat die is ingesteld in het script.
Syntaxis:
QuarterEnd(date[, period_no[, first_month_of_year]])
Retourgegevenstypen: dual
De quarterend()-functie bepaalt welk kwartaal de datum in valt. Hij retourneert vervolgens een tijdstempel, in datumnotatie, voor de laatste milliseconde van de laatste maand van dat kwartaal. 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 quarterend() te gebruiken.
Wanneer gebruiken
De quarterend()-functie wordt voornamelijk gebruikt als onderdeel van een uitdrukking als u wilt dat in de berekening een deel van het kwartaal wordt gebruikt dat nog niet heeft plaatsgevonden. Bijvoorbeeld als u de totale rente wilt berekenen die nog niet is berekend gedurende het kwartaal.
Argument | Beschrijving |
---|---|
date | De te evalueren datum of tijdstempel. |
period_no | period_no is een geheel getal, waarbij de waarde 0 het kwartaal aangeeft dat date bevat. Negatieve waarden in period_no geven voorafgaande kwartalen aan en positieve waarden geven volgende kwartalen 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 |
---|---|
quarterend('10/29/2005') | Retourneert 12/31/2005 23:59:59. |
quarterend('10/29/2005', -1) | Retourneert 09/30/2005 23:59:59. |
quarterend('10/29/2005', 0, 3) | Retourneert 11/30/2005 23:59:59. |
Voorbeeld 1 – Basisvoorbeeld
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensverzameling met een reeks transacties in 2022 die wordt geladen in de tabel Transactions.
-
Een voorgaande lading die het volgende bevat:
-
De quarterend()-functie die is ingesteld als het end_of_quarter-veld en een tijdstempel retourneert voor het eind van het kwartaal waarin de transacties plaatsvonden.
-
De timestamp()-functie die is ingesteld als het end_of_quarter_timestamp-veld en de exacte tijdstempel retourneert voor het eind van het geselecteerde kwartaal.
-
Load-script
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date) as end_of_quarter,
timestamp(quarterend(date)) as end_of_quarter_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
-
end_of_quarter
-
end_of_quarter_timestamp
id | date | end_of_quarter | end_of_quarter_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8190 | 2/5/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8191 | 2/28/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8198 | 7/9/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Het end_of_quarter-veld wordt gemaakt in de voorafgaande load-instructie met behulp van de quarterend()-functie en geeft het datumveld door als het argument van de functie.
De quarterend()-functie identificeert aanvankelijk in welk kwartaal de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van dat kwartaal.
Transactie 8203 vond plaats op 8 augustus. De quarterend()-functie identificeert dat de transactie in het derde kwartaal plaatsvond en retourneert de laatste milliseconde van dat kwartaal. Dat is 30 september om 11:59:59 PM.
Voorbeeld 2 – period_no
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 reeks transacties in 2022 die wordt geladen in de tabel Transactions.
-
Een voorgaande lading die het volgende bevat:
-
De quarterend()-functie die is ingesteld als het previous_quarter_end-veld en een tijdstempel retourneert voor het eind van het kwartaal vóór het kwartaal waarin de transactie plaatsvond.
-
De timestamp()-functie die is ingesteld als het previous_end_of_quarter_timestamp-veld en de exacte tijdstempel retourneert voor het eind van het kwartaal vóór het kwartaal waarin de transactie plaatsvond.
-
Load-script
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, -1) as previous_quarter_end,
timestamp(quarterend(date, -1)) as previous_quarter_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/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_quarter_end
-
previous_quarter_end_timestamp
id | date | previous_quarter_end | previous_quarter_end_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8189 | 1/19/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8190 | 2/5/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8191 | 2/28/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8192 | 3/16/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8193 | 4/1/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8194 | 5/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8195 | 5/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8198 | 7/9/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8207 | 10/29/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
Omdat een period_no van -1 wordt gebruikt als het offset-argument in de functie quarterend(), identificeert de functie eerst het kwartaal waarin de transacties plaatsvinden. Het verschuift dan naar een kwartaal eerder en identificeert de laatste milliseconde van dat kwartaal.
Transactie 8203 vond plaats op 8 augustus. De quarterend()-functie identificeert dat het kwartaal vóór het kwartaal waarin de transactie plaatsvond tussen 1 april en 30 juni viel. De functie retourneert vervolgens de laatste milliseconde van dat kwartaal, namelijk 30 juni om 11:59:59 PM.
Voorbeeld 3 - first_month_of_year
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 reeks transacties in 2022 die wordt geladen in de tabel Transactions.
-
Een voorgaande lading die het volgende bevat:
-
De quarterend()-functie die is ingesteld als het end_of_quarter-veld en een tijdstempel retourneert voor het eind van het kwartaal waarin de transacties plaatsvonden.
-
De timestamp()-functie die is ingesteld als het end_of_quarter_timestamp-veld en de exacte tijdstempel retourneert voor het eind van het geselecteerde kwartaal.
-
Maar in dit voorbeeld is het bedrijfsbeleid dat het boekjaar op 1 maart begint.
Load-script
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, 0, 3) as end_of_quarter,
timestamp(quarterend(date, 0, 3)) as end_of_quarter_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultaten
id | date | end_of_quarter | end_of_quarter_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8189 | 1/19/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8190 | 2/5/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8191 | 2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8192 | 3/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8194 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8195 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8198 | 7/9/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8199 | 7/22/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8200 | 7/23/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8201 | 7/27/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8202 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8203 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8204 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8205 | 9/26/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
8207 | 10/29/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
Omdat het first_month_of_year-argument van 3 is gebruikt in de quarterend()-functie, wordt het begin van het jaar verplaatst van 1 januari naar 1 maart.
Transactie 8203 vond plaats op 8 augustus. Omdat het begin van het jaar 1 maart is, liggen de kwartalen van het jaar als volgt maa-mei, jun-aug, sep-nov en dec-feb.
De quarterend()-functie identificeert dat de transactie in het kwartaal tussen het begin van juni en augustus plaatsvond en retourneert de laatste milliseconde van dat kwartaal. Dat is 31 augustus om 11:59:59 PM.
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 tijdstempel retourneert voor het eind van het kwartaal waarin de transacties plaatsvonden is gemaakt als meting in een diagramobject in de app.
Load-script
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/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 de einddatum van het kwartaal waarin een transactie plaatsvindt te berekenen:
-
=quarterend(date)
-
=timestamp(quarterend(date))
id | date | =quarterend(date) | =timestamp(quarterend(date)) |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8190 | 2/5/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8191 | 2/28/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8198 | 7/9/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Het end_of_quarter-veld wordt gemaakt in de voorafgaande load-instructie met behulp van de quarterend()-functie en geeft het datumveld door als het argument van de functie.
De quarterend()-functie identificeert aanvankelijk in welk kwartaal de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van dat kwartaal.
Transactie 8203 vond plaats op 8 augustus. De quarterend()-functie identificeert dat de transactie in het derde kwartaal plaatsvond en retourneert de laatste milliseconde van dat kwartaal. Dat is 30 september om 11:59:59 PM.
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
-
Werknemersnamen
-
De 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 kwartaal 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 opgebouwde rente te berekenen:
-
=(quarterend(today(1))-today(1))*avg_daily_claim
Stel de Getalnotatie van de meting in op Geld.
employee_id | employee_name | =(quarterend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $480.00 |
183 | Deryck | $400.00 |
184 | Dexter | $400.00 |
185 | Sydney | $864.00 |
186 | Agatha | $576.00 |
De quarterend()-functie gebruikt de datum van vandaag als het enige argument en retourneert de einddatum van de huidige maand. Door vervolgens de datum van vandaag af te trekken van de einddatum van het jaar, retourneert de uitdrukking het aantal resterende dagen in deze maand.
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 kwartaal zal indienen.