quarterend - skript- och diagramfunktion
Denna funktion returnerar ett värde som motsvarar en tidsmarkör för den sista millisekunden i det kvartal som innehåller date. Det förvalda utdataformatet blir det DateFormat som har definierats i skriptet.
Syntax:
QuarterEnd(date[, period_no[, first_month_of_year]])
Returnerad datatyp: dual
quarterend()-funktionen bestämmer vilket kvartal datumet infaller. Den returnerar sedan en tidsmarkör, i datumformat, för den sista millisekunden i den sista månaden i det kvartalet. Årets första månad är som standard januari. Du kan dock ändra vilken månad som anges som första månaden genom att använda first_month_of_year-argumentet i quarterend()-funktionen.
Användning
quarterend()-funktionen används vanligen som en del av ett uttryck när du vill att beräkningen ska använda den del av kvartalet som ännu inte har inträffat. Till exempel om du vill beräkna den totala ränta som ännu inte uppkommit under kvartalet.
Argument | Beskrivning |
---|---|
date | Det datum eller den tidsmarkör som ska utvärderas. |
period_no | period_no är ett heltal, där värdet 0 anger det kvartal som innehåller date. Negativa värden i period_no anger föregående kvartal och positiva värden anger efterföljande kvartal. |
first_month_of_year | Om du vill arbeta med (budget)år som inte börjar i januari kan du ange ett värde mellan 2 och 12 i first_month_of_year. |
Du kan använda följande värden för att ställa in den första månaden på året i argumentet first_month_of_year:
Månad | Värde |
---|---|
februari | 2 |
mars | 3 |
april | 4 |
Maj | 5 |
juni | 6 |
juli | 7 |
augusti | 8 |
september | 9 |
oktober | 10 |
november | 11 |
december |
12 |
Lokala inställningar
Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i SET DateFormat-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.
Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.
Exempel | Resultat |
---|---|
quarterend('10/29/2005') | Returnerar 12/31/2005 23:59:59. |
quarterend('10/29/2005', -1) | Returns 09/30/2005 23:59:59. |
quarterend('10/29/2005', 0, 3) | Returns 11/30/2005 23:59:59. |
Exempel 1 – Grundläggande exempel
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En datauppsättning som innehåller en uppsättning transaktioner från 2022 som laddas i en tabell som heter Transactions.
-
En föregående laddning som innehåller följande:
-
quarterend()-funktionen som har ställts in som end_of_quarter-fältet och returnerar en tidsmarkör för slutet av det kvartal när transaktionerna ägde rum.
-
timestamp()-funktionen som har ställts in som end_of_quarter_timestamp-fältet och returnerar den exakta tidsmarkören för slutet av det valda kvartalet.
-
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
-
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 |
end_of_quarter-fältet skapades i den föregående load-satsen genom att använda quarterend()-funktionen och skicka datumfältet som funktionens argument.
Funktionen quarterend() identifierar initialt vilket kvartal datumvärdet infaller och returnerar sedan en tidsmarkör för den sista millisekunden av det kvartalet.
Transaktion 8203 ägde rum 8 augusti. quarterend()-funktionen identifierar att transaktionen ägde rum under det tredje kvartalet och returnerar den sista millisekunden av det kvartalet, vilket är 30 september 23:59:59.
Exempel 2 – period_no
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En datauppsättning som innehåller en uppsättning transaktioner från 2022 som laddas i en tabell som heter Transactions.
-
En föregående laddning som innehåller följande:
-
quarterend()-funktionen som har ställts in som previous_quarter_end-fältet och returnerar en tidsmarkör för slutet av kvartalet innan transaktionerna ägde rum.
-
timestamp()-funktionen som har ställts in som previous_end_of_quarter_timestamp-fältet och returnerar den exakta tidsmarkören för slutet av kvartalet innan transaktionerna ägde rum.
-
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
-
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 |
Eftersom en period_no på -1 används som förskjutningsargument i quarterend()-funktionen så identifierar funktionen först kvartalet då transaktionerna äger rum. Den skiftar sedan till närmast föregående kvartal och identifierar den sista millisekunden i det kvartalet.
Transaktion 8203 ägde rum 8 augusti. quarterend()-funktionen identifierar att kvartalet innan transaktionen ägde rum var mellan 1 april och 30 juni. Funktionen returnerar sedan den sista millisekunden i det kvartalet, 30 juni 23:59:59.
Exempel 3 – first_month_of_year
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En datauppsättning som innehåller en uppsättning transaktioner från 2022 som laddas i en tabell som heter Transactions.
-
En föregående laddning som innehåller följande:
-
quarterend()-funktionen som har ställts in som end_of_quarter-fältet och returnerar en tidsmarkör för slutet av det kvartal när transaktionerna ägde rum.
-
timestamp()-funktionen som har ställts in som end_of_quarter_timestamp-fältet och returnerar den exakta tidsmarkören för slutet av det valda kvartalet.
-
Men i det här exemplet är företagspolicyn att räkenskapsåret börjar 1 mars.
Laddningsskript
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
];
Resultat
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 |
Eftersom first_month_of_year-argumentet 3 används i quarterend()-funktionen flyttas årets början från 1 januari till 1 mars.
Transaktion 8203 ägde rum 8 augusti. Eftersom årets början är 1 mars inträffar kvartalen under året i mars-maj, jun-aug, sep-nov och dec-feb.
quarterend()-funktionen identifierar att transaktionen ägde rum i kvartalet mellan början av juni och augusti och returnerar den sista millisekunden av det kvartalet, vilket är 31 augusti 23:59:59.
Exampel 4 – Diagramobjektexempel
Översikt
Samma datauppsättning och scenario som det första exemplet används.
I det här exemplet är dock datauppsättningen oförändrad och har lästs in i programmet. Beräkningen som returnerar en tidsmarkör för slutet av det kvartal då transaktionerna ägde rum skapas som ett mått ett diagram i appen.
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
-
id
-
date
För att beräkna slutdatum för det kvartal då en transaktion äger rum skapar du följande mått:
-
=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 |
end_of_quarter-fältet skapades i den föregående load-satsen genom att använda quarterend()-funktionen och skicka datumfältet som funktionens argument.
Funktionen quarterend() identifierar initialt vilket kvartal datumvärdet infaller och returnerar sedan en tidsmarkör för den sista millisekunden av det kvartalet.
Transaktion 8203 ägde rum 8 augusti. quarterend()-funktionen identifierar att transaktionen ägde rum under det tredje kvartalet och returnerar den sista millisekunden av det kvartalet, vilket är 30 september 23:59:59.
Exempel 5 – Scenario
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En datauppsättning läses in i en tabell som heter Employee_Expenses. Tabellen innehåller följande fält:
-
Anställnings-ID
-
Anställdas namn
-
Genomsnittliga dagliga kostnadsanspråk för varje anställd.
-
Slutanvändaren vill ha ett diagramobjekt som visar, efter anställnings-id och anställds namn, de beräknade kostnadsanspråken som fortfarande återstår för resten av kvartalet. Räkenskapsåret börjar i januari.
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
-
employee_id
-
employee_name
För att beräkna ackumulerad ränta skapar du följande mått:
-
=(quarterend(today(1))-today(1))*avg_daily_claim
Ange måttens Nummerformatering till Pengar.
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 |
quarterend()-funktionen använder dagens datum som sitt enda argument och returnerar slutdatumet för den aktuella månaden. Därefter subtraherar den dagens datum från årets slutdatum, och uttrycket returnerar antalet dagar som återstår denna månad.
Detta värde multipliceras sedan med den genomsnittliga dagliga kostnadsanspråket för varje anställd för att beräkna det uppskattade värdet av anspråk som varje anställd förväntas göra under det återstående kvartalet.