Denna funktion returnerar ett värde som motsvarar en tidsmarkör för den första millisekunden i månaden, tvåmånadersperioden, kvartalet, fyramånadersperioden eller halvåret som innehåller ett basdatum. Det går även att hitta tidsmarkören för en föregående eller senare tidsperiod.Det förvalda utdataformatet är det som har definierats i skriptet.DateFormat
monthsstart()-funktionen delar in året i segment baserat på det n_months-argument som tillhandahålls. Den utvärderar sedan vilket segment som varje tillhandahållet datum infaller och returnerar den första millisekunden, i datumformat, för det segmentet. Funktionen ger också möjlighet att returnera starttidsmarkören från föregående eller efterföljande segment, samt omdefiniera vilket som är årets första månad.
Följande segment av året är tillgängliga i funktionen som n_month-argument:
Möjliga n_month-argument
Perioder
Antal månader
månad
1
två månader
2
kvartal
3
fyra månader
4
halvår
6
Argument
Argument
Beskrivning
n_months
Antalet månader som definierar perioden. Ett heltal eller uttryck vars resultat blir ett heltal som ska vara antingen: 1 (motsvaras av inmonth()-funktionen), 2 (tvåmånadersperiod), 3 (motsvaras av inquarter()-funktionen), 4 (fyramånadersperiod) eller 6 (halvår).
date
Det datum eller den tidsmarkör som ska utvärderas.
period_no
Periodens startpunkt kan flyttas med period_no, ett heltal, eller ett uttryck som resulterar i ett heltal, där värdet 0 anger den period som innehåller base_date. Negativa värden i period_no anger föregående perioder och positiva värden anger efterföljande perioder.
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.
Användning
monthsstart()-funktionen används vanligtvis som en del av ett uttryck när användaren vill att beräkningen ska använda den del av en period som ännu inte har inträffat. Detta kan exempelvis användas för att tillhandahålla en inmatningsvariabel som ger användaren möjlighet att beräkna den totala räntan som har ackumulerats hittills under månaden, kvartalet eller halvåret.
Exempel på funktioner
Exempel
Resultat
monthsstart(4, '10/19/2013')
Returnerar 09/01/2013.
monthsstart(4, '10/19/2013, -1)
Returnerar 05/01/2013.
monthsstart(4, '10/19/2013', 0, 2
)
Returnerar 10/01/2013, eftersom årets början blir månad 2.
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. Mer information finns i Ändra regioninställningar för appar och skript.
Regionala standardinställningar i appar baseras på användarprofilen. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Cloud användargränssnittet. Qlik Cloud kommer att visas på samma språk som webbläsaren du använder.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller transaktioner för 2022 som läses in i en tabell som heter Transactions.
Datumfältet tillhandahålls i formatet (ÅÅÅÅ-MM-DD) i systemvariabeln DateFormat.
Ett fält bi_monthly_start skapas som grupperar transaktioner i tvåmånaderssegment och returnerar starttidsmarkören för det segmentet för varje transaktion.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
bi_monthly_start
bi_monthly_start_timestamp
Resultattabell
date
bi_monthly_start
bi_monthly_start_timestamp
2/19/2022
01/01/2022
1/1/2022 12:00:00 AM
3/7/2022
03/01/2022
3/1/2022 12:00:00 AM
3/30/2022
03/01/2022
3/1/2022 12:00:00 AM
4/5/2022
03/01/2022
3/1/2022 12:00:00 AM
4/16/2022
03/01/2022
3/1/2022 12:00:00 AM
5/1/2022
05/01/2022
5/1/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/22/2022
05/01/2022
5/1/2022 12:00:00 AM
6/15/2022
05/01/2022
5/1/2022 12:00:00 AM
6/26/2022
05/01/2022
5/1/2022 12:00:00 AM
7/9/2022
07/01/2022
7/1/2022 12:00:00 AM
7/22/2022
07/01/2022
7/1/2022 12:00:00 AM
7/23/2022
07/01/2022
7/1/2022 12:00:00 AM
7/27/2022
07/01/2022
7/1/2022 12:00:00 AM
8/2/2022
07/01/2022
7/1/2022 12:00:00 AM
8/8/2022
07/01/2022
7/1/2022 12:00:00 AM
8/19/2022
07/01/2022
7/1/2022 12:00:00 AM
9/26/2022
09/01/2022
9/1/2022 12:00:00 AM
10/14/2022
09/01/2022
9/1/2022 12:00:00 AM
10/29/2022
09/01/2022
9/1/2022 12:00:00 AM
bi_monthly_start-fältet skapas i föregående LOAD-sats med hjälp av funktionen monthsstart(). Det första argumentet som tillhandahålls är 2, som delar upp året i tvåmånaderssegment. Det första argumentet som anges identifierar vilket fält som utvärderas.
Transaktion 8195 äger rum den 22 maj. monthsstart()-funktionen delar initialt upp året i tvåmånaderssegment. Transaktion 8195 infaller i segmentet mellan 1 maj och 30 juni. Därför returnerar funktionen den första millisekunden i det här segmentet, 1 maj 2022 0:00:00.
Exempel 2 – period_no
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Samma datauppsättning och scenario som i det första exemplet.
Ett fält prev_bi_monthly_start skapas som returnerar den första millisekunden i tvåmånaderssegmentet innan transaktionen ägde rum.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
prev_bi_monthly_start
prev_bi_monthly_start_timestamp
Resultattabell
date
prev_bi_monthly_start
prev_bi_monthly_start_timestamp
2/19/2022
11/01/2021
11/1/2021 12:00:00 AM
3/7/2022
01/01/2022
1/1/2022 12:00:00 AM
3/30/2022
01/01/2022
1/1/2022 12:00:00 AM
4/5/2022
01/01/2022
1/1/2022 12:00:00 AM
4/16/2022
01/01/2022
1/1/2022 12:00:00 AM
5/1/2022
03/01/2022
3/1/2022 12:00:00 AM
5/7/2022
03/01/2022
3/1/2022 12:00:00 AM
5/22/2022
03/01/2022
3/1/2022 12:00:00 AM
6/15/2022
03/01/2022
3/1/2022 12:00:00 AM
6/26/2022
03/01/2022
3/1/2022 12:00:00 AM
7/9/2022
05/01/2022
5/1/2022 12:00:00 AM
7/22/2022
05/01/2022
5/1/2022 12:00:00 AM
7/23/2022
05/01/2022
5/1/2022 12:00:00 AM
7/27/2022
05/01/2022
5/1/2022 12:00:00 AM
8/2/2022
05/01/2022
5/1/2022 12:00:00 AM
8/8/2022
05/01/2022
5/1/2022 12:00:00 AM
8/19/2022
05/01/2022
5/1/2022 12:00:00 AM
9/26/2022
07/01/2022
7/1/2022 12:00:00 AM
10/14/2022
07/01/2022
7/1/2022 12:00:00 AM
10/29/2022
07/01/2022
7/1/2022 12:00:00 AM
Genom att använda -1 som period_no-argument i monthsstart()-funktionen, efter att initialt ha delat upp ett år i tvåmånaderssegment, returnerar funktionen den första millisekunden i det föregående tvåmånaderssegmentet till när en transaktion äger rum.
Transaktion 8195 faller in i segmentet mellan maj och juni. Därför var det föregående tvåmånaderssegmentet mellan 1 mars och 30 april, så funktionen returnerar funktionen den första millisekunden i det här segmentet, 1 mars 2022 0:00:00.
Exempel 3 – first_month_of_year
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Samma datauppsättning och scenario som i det första exemplet.
Ett fält skapas bi_monthly_start, som grupperar transaktioner i tvåmånaderssegment och returnerar starttidsmarkören för uppsättningen för varje transaktion.
Men i det här exemplet måste vi också ställa in april som den första månaden i räkenskapsåret.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
bi_monthly_start
bi_monthly_start_timestamp
Resultattabell
date
bi_monthly_start
bi_monthly_start_timestamp
2/19/2022
02/01/2022
2/1/2022 12:00:00 AM
3/7/2022
02/01/2022
2/1/2022 12:00:00 AM
3/30/2022
02/01/2022
2/1/2022 12:00:00 AM
4/5/2022
04/01/2022
4/1/2022 12:00:00 AM
4/16/2022
04/01/2022
4/1/2022 12:00:00 AM
5/1/2022
04/01/2022
4/1/2022 12:00:00 AM
5/7/2022
04/01/2022
4/1/2022 12:00:00 AM
5/22/2022
04/01/2022
4/1/2022 12:00:00 AM
6/15/2022
06/01/2022
6/1/2022 12:00:00 AM
6/26/2022
06/01/2022
6/1/2022 12:00:00 AM
7/9/2022
06/01/2022
6/1/2022 12:00:00 AM
7/22/2022
06/01/2022
6/1/2022 12:00:00 AM
7/23/2022
06/01/2022
6/1/2022 12:00:00 AM
7/27/2022
06/01/2022
6/1/2022 12:00:00 AM
8/2/2022
08/01/2022
8/1/2022 12:00:00 AM
8/8/2022
08/01/2022
8/1/2022 12:00:00 AM
8/19/2022
08/01/2022
8/1/2022 12:00:00 AM
9/26/2022
08/01/2022
8/1/2022 12:00:00 AM
10/14/2022
10/01/2022
10/1/2022 12:00:00 AM
10/29/2022
10/01/2022
10/1/2022 12:00:00 AM
Genom att använda 4 som first_month_of_year-argument i monthsstart()-funktionen startar funktionen året den 1 april och delar sedan upp året i tvåmånaderssegment: apr-maj,jun-jul,aug-sep,okt-nov,dec-jan,feb-mars.
Transaktion 8195 ägde rum den 22 maj och faller in i segmentet mellan 1 april och 31 maj. Därför returnerar funktionen den första millisekunden i det här segmentet, 1 april 2022 0:00:00.
Exampel 4 – Diagramobjektexempel
Översikt
Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.
Laddningsskriptet innehåller samma datauppsättning och scenario som i det första exemplet.
I det här exemplet har dock den oförändrade datauppsättningen skickats till programmet. Beräkningen som grupperar transaktioner i tvåmånaderssegment och returnerar starttidsmarkören för uppsättningen för varje transaktion skapas som ett mått i ett diagramobjekt för programmet.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension: date.
Skapa följande mått:
=monthsstart(2,date)
=timestamp(monthsstart(2,date))
De här beräkningarna hämtar starttidsmarkören för det tvåmånaderssegment då varje transaktion ägde rum.
Resultattabell
date
=monthsstart(2,date)
=timestamp(monthsstart(2,date))
9/26/2022
09/01/2022
9/1/2022 12:00:00 AM
10/14/2022
09/01/2022
9/1/2022 12:00:00 AM
10/29/2022
09/01/2022
9/1/2022 12:00:00 AM
7/9/2022
07/01/2022
7/1/2022 12:00:00 AM
7/22/2022
07/01/2022
7/1/2022 12:00:00 AM
7/23/2022
07/01/2022
7/1/2022 12:00:00 AM
7/27/2022
07/01/2022
7/1/2022 12:00:00 AM
8/2/2022
07/01/2022
7/1/2022 12:00:00 AM
8/8/2022
07/01/2022
7/1/2022 12:00:00 AM
8/19/2022
07/01/2022
7/1/2022 12:00:00 AM
5/1/2022
05/01/2022
5/1/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/22/2022
05/01/2022
5/1/2022 12:00:00 AM
6/15/2022
05/01/2022
5/1/2022 12:00:00 AM
6/26/2022
05/01/2022
5/1/2022 12:00:00 AM
3/7/2022
03/01/2022
3/1/2022 12:00:00 AM
3/30/2022
03/01/2022
3/1/2022 12:00:00 AM
4/5/2022
03/01/2022
3/1/2022 12:00:00 AM
4/16/2022
03/01/2022
3/1/2022 12:00:00 AM
2/19/2022
01/01/2022
1/1/2021 12:00:00 AM
Transaktion 8195 ägde rum den 22 maj. monthsstart()-funktionen delar initialt upp året i tvåmånaderssegment. Transaktion 8195 infaller i segmentet mellan 1 maj och 30 juni. Därför returnerar funktionen den första millisekunden i det här segmentet, 2022-05-01 0:00:00.
Exempel 5 – Scenario
Ö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 lånesaldon som laddas i en tabell som heter Loans.
Data som består av låne-ID:n, saldot vid månadens början och den enkla räntan som tas ut på varje lån per år.
Slutanvändaren vill ha ett diagramobjekt som visar, efter låne-id, den aktuella räntan som har ackumulerats för varje lån under den valda perioden. Räkenskapsåret börjar i januari.
I början av laddningsskriptet har en variabel (vPeriod) skapats som kommer att kopplas till variabelinmatningskontrollen. Konfigurera sedan variabeln som ett anpassat objekt i arket.
Gör följande:
Klicka på Anpassade objekti resurspanelen.
Välj QlikInstrumentpanelspaket och skapa ett variabelinmatningsobjekt.
Ange en titel för diagramobjektet.
Under Variabel väljer du vPeriod som namn och ställer in objektet så att det visas som en rullgardinsmeny.
Under Värden konfigurerar du objektet för att använda dynamiska värden. Ange följande: ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'
Skapa sedan resultattabellen.
Gör följande:
Skapa en ny tabell. Lägg till följande fält som dimensioner:
Ange måttens Nummerformatering till Pengar. Klicka på Redigering klar. Du kan nu ändra data som visas i tabellen genom att justera tidssegmentet i variabelobjektet.
Så här kommer resultattabellen att se ut när month-periodalternativet är valt:
monthsstart()-funktionen använder användarinmatning som sitt första argument och dagens datum som sitt andra argument, returnerar startdatumet i perioden som användaren har valt. Genom att subtrahera resultatet från det aktuella datumet returnerar uttrycket antalet dagar som har förflutit hittills denna period.
Detta värde multipliceras sedan med räntan och divideras med 365 för att returnera den effektiva räntan för perioden. Resultatet multipliceras sedan med lånets utgångssaldo för att returnera den upplupna räntan hittills denna period.
Var den här sidan till hjälp för dig?
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!