lunarweekstart - skript- och diagramfunktion
Denna funktion returnerar ett vÀrde som motsvarar en tidsmarkör för den första millisekunden för den första dagen i den sjudagarsperiod som innehÄller date. Sjudagarsperioder i Qlik Sense definieras genom att rÀkna 1 januari som den första dagen i veckan. Bortsett frÄn Ärets sista vecka kommer varje vecka att ha exakt sju dagar.
Syntax:
LunarweekStart(date[, period_no[, first_week_day]])
Returnerad datatyp: dual
lunarweekstart()-funktionen avgör vilken sjudagarsperiod date infaller i. Den returnerar sedan en tidsstÀmpel, i datumformat, för den första millisekunden av den veckan.
Exempeldiagram för lunarweekstart()-funktionen

Argument | Beskrivning |
---|---|
date | Det datum eller den tidsmarkör som ska utvÀrderas. |
period_no | period_no Àr ett heltal, eller ett uttryck som resulterar i ett heltal, dÀr vÀrdet 0 anger den sjudagarsperiod som innehÄller date. Negativa vÀrden i period_no anger föregÄende sjudagarsperioder och positiva vÀrden anger efterföljande sjudagarsperioder. |
first_week_day | En förflyttning av startpunkten som kan vara större eller mindre Àn noll. Detta flyttar början pÄ Äret med det angivna antalet dagar och/eller delar av en dag. |
AnvÀndning
lunarweekstart()-funktionen anvÀnds vanligtvis som en del av ett uttryck nÀr anvÀndaren vill att berÀkningen ska anvÀnda den del av veckan som har förflutit hittills. Till skillnad frÄn weekstart()-funktionen börjar veckan 1 januari varje nytt kalenderÄr och varje efterföljande vecka börjar sju dagar senare. lunarweekstart()-funktionen pÄverkas inte av systemvariabeln FirstWeekDay.
lunarweekstart() kan exempelvis anvÀndas för att berÀkna den rÀnta som har ackumulerats under en vecka hittills.
Exempel | Resultat |
---|---|
lunarweekstart('01/12/2013') | Returnerar 01/08/2013. |
lunarweekstart('01/12/2013', -1) | Returnerar 01/01/2013. |
lunarweekstart('01/12/2013', 0, 1 ) | Returnerar 01/09/2013, eftersom instÀllningen first_week_day till 1 innebÀr att början av Äret Àndras till 01/02/2013. |
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.
Om du skapar appar, kan du ange standardregionen för de appar du skapar. Mer information finns hÀr StÀlla in önskade regioninstÀllningar för att skapa appar och skript i Qlik Cloud-analys.
Exempel 1 â inga ytterligare argument
Ăversikt
Ăppna dataladdningsredigeraren och lĂ€gg till laddningsskriptet nedan i ett nytt delavsnitt.
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 start_of_week skapas som returnerar en tidsmarkör för början av den sjudagarsperiod dÄ transaktionen Àgde rum.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekstart(date) as start_of_week,
timestamp(lunarweekstart(date)) as start_of_week_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:
-
date
-
start_of_week
-
start_of_week_timestamp
date | start_of_week | start_of_week_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/15/2022 | 1/15/2022 12:00:00 AM |
2/5/2022 | 02/05/2022 | 2/5/2022 12:00:00 AM |
2/28/2022 | 02/26/2022 | 2/26/2022 12:00:00 AM |
3/16/2022 | 03/12/2022 | 3/12/2022 12:00:00 AM |
4/1/2022 | 03/26/2022 | 3/26/2022 12:00:00 AM |
5/7/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
5/16/2022 | 05/14/2022 | 5/14/2022 12:00:00 AM |
6/15/2022 | 06/11/2022 | 6/11/2022 12:00:00 AM |
6/26/2022 | 06/25/2022 | 6/25/2022 12:00:00 AM |
7/9/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
7/22/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
7/23/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
7/27/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
8/2/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
8/8/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
8/19/2022 | 08/13/2022 | 8/13/2022 12:00:00 AM |
9/26/2022 | 09/24/2022 | 9/24/2022 12:00:00 AM |
10/14/2022 | 10/08/2022 | 10/8/2022 12:00:00 AM |
10/29/2022 | 10/29/2022 | 10/29/2022 12:00:00 AM |
start_of_week-fÀltet skapades i den föregÄende load-satsen genom att anvÀnda lunarweekstart()-funktionen och skicka date-fÀltet som funktionens argument.
lunarweekstart()-funktionen identifierar vilken sjudagarsperiod datumvÀrdet infaller och returnerar en tidsstÀmpel för den första millisekunden av den veckan.
Diagram för lunarweekstart()-funktionen, exempel utan ytterligare argument

Transaktion 8189 Àgde rum 19 januari. lunarweekstart()-funktionen identifierar att sjudagarsperioden börjar 15 januari. DÀrför returnerar start_of_week-vÀrdet för denna transaktion den första millisekunden denna dag, vilket Àr 15 januari 12:00:00 AM.
Exempel 2 â period_no
Ăversikt
Ăppna dataladdningsredigeraren och lĂ€gg till laddningsskriptet nedan i ett nytt delavsnitt.
Laddningsskriptet innehÄller:
-
Samma datauppsÀttning och scenario som i det första exemplet.
-
Ett fÀlt previous_lunar_week_start skapas som returnerar tidsmarkören för början av sjudagarsperioden innan transaktionen Àgde rum.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekstart(date,-1) as previous_lunar_week_start,
timestamp(lunarweekstart(date,-1)) as previous_lunar_week_start_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
date | previous_lunar_week_start | previous_lunar_week_start_timestamp |
---|---|---|
1/7/2022 | 12/24/2021 | 12/24/2021 12:00:00 AM |
1/19/2022 | 01/08/2022 | 1/8/2022 12:00:00 AM |
2/5/2022 | 01/29/2022 | 1/29/2022 12:00:00 AM |
2/28/2022 | 02/19/2022 | 2/19/2022 12:00:00 AM |
3/16/2022 | 03/05/2022 | 3/5/2022 12:00:00 AM |
4/1/2022 | 03/19/2022 | 3/19/2022 12:00:00 AM |
5/7/2022 | 04/30/2022 | 4/30/2022 12:00:00 AM |
5/16/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
6/15/2022 | 06/04/2022 | 6/4/2022 12:00:00 AM |
6/26/2022 | 06/18/2022 | 6/18/2022 12:00:00 AM |
7/9/2022 | 07/02/2022 | 7/2/2022 12:00:00 AM |
7/22/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
7/23/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
7/27/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
8/2/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
8/8/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
8/19/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
9/26/2022 | 09/17/2022 | 9/17/2022 12:00:00 AM |
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/22/2022 | 10/22/2022 12:00:00 AM |
Eftersom ett period_no pÄ -1 anvÀndes som förskjutningsargument i lunarweekstart()-funktionen i det hÀr fallet, identifierar funktionen först den sjudagarsperiod dÄ transaktionerna Àger rum. Den skiftar sedan en vecka innan och identifierar den första millisekunden i den sjudagarsperioden.
Diagram med exempel pÄ lunarweekstart()-funktionen, period_no

Transaktion 8189 Àgde rum 19 januari. lunarweekstart()-funktionen identifierar att sjudagarsperioden börjar 15 januari. DÀrför började den föregÄende sjudagarsperioden den 8 januari 12:00:00 AM; detta Àr det vÀrde som returneras för previous_lunar_week_start-fÀltet.
Exempel 3 â first_week_day
Ă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 stÀller vi in sjudagarsperioderna till att börja 5 januari.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekstart(date,0,4) as start_of_week,
timestamp(lunarweekstart(date,0,4)) as start_of_week_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:
-
date
-
start_of_week
-
start_of_week_timestamp
date | start_of_week | start_of_week_timestamp |
---|---|---|
1/7/2022 | 01/05/2022 | 1/5/2022 12:00:00 AM |
1/19/2022 | 01/19/2022 | 1/19/2022 12:00:00 AM |
2/5/2022 | 02/02/2022 | 2/2/2022 12:00:00 AM |
2/28/2022 | 02/23/2022 | 2/23/2022 12:00:00 AM |
3/16/2022 | 03/16/2022 | 3/16/2022 12:00:00 AM |
4/1/2022 | 03/30/2022 | 3/30/2022 12:00:00 AM |
5/7/2022 | 05/04/2022 | 5/4/2022 12:00:00 AM |
5/16/2022 | 05/11/2022 | 5/11/2022 12:00:00 AM |
6/15/2022 | 06/15/2022 | 6/15/2022 12:00:00 AM |
6/26/2022 | 06/22/2022 | 6/22/2022 12:00:00 AM |
7/9/2022 | 07/06/2022 | 7/6/2022 12:00:00 AM |
7/22/2022 | 07/20/2022 | 7/20/2022 12:00:00 AM |
7/23/2022 | 07/20/2022 | 7/20/2022 12:00:00 AM |
7/27/2022 | 07/27/2022 | 7/27/2022 12:00:00 AM |
8/2/2022 | 07/27/2022 | 7/27/2022 12:00:00 AM |
8/8/2022 | 08/03/2022 | 8/3/2022 12:00:00 AM |
8/19/2022 | 08/17/2022 | 8/17/2022 12:00:00 AM |
9/26/2022 | 09/21/2022 | 9/21/2022 12:00:00 AM |
10/14/2022 | 10/12/2022 | 10/12/2022 12:00:00 AM |
10/29/2022 | 10/26/2022 | 10/26/2022 12:00:00 AM |
Eftersom first_week_date-argumentet 4 anvÀnds i lunarweekstart()-funktionen i det hÀr fallet förskjuts Ärets början frÄn 1 januari till 5 januari.
Diagram med exempel pÄ lunarweekstart()-funktionen, first_week_day

Transaktion 8189 Àgde rum 19 januari. Eftersom sjudagarsperioderna börjar 5 januari identifierar lunarweekstart()-funktionen att den sjudagarsperiod som innehÄller 19 januari ocksÄ börjar 19 januari 12:00:00 AM. DÀrför Àr detta det vÀrde som returneras för start_of_week-fÀltet.
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 returnerar en tidsmarkör för början av sjudagarsperioden dÄ transaktionerna Àgde rum skapas som ett mÄtt i ett diagramobjekt för programmet.
Laddningsskript
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 det hÀr fÀltet som en dimension: date.
LÀgg till följande mÄtt:
=lunarweekstart(date)
=timestamp(lunarweekstart(date))
date | =lunarweekstart(date) | =timestamp(lunarweekstart(date)) |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/15/2022 | 1/15/2022 12:00:00 AM |
2/5/2022 | 02/05/2022 | 2/5/2022 12:00:00 AM |
2/28/2022 | 02/26/2022 | 2/26/2022 12:00:00 AM |
3/16/2022 | 03/12/2022 | 3/12/2022 12:00:00 AM |
4/1/2022 | 03/26/2022 | 3/26/2022 12:00:00 AM |
5/7/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
5/16/2022 | 05/14/2022 | 5/14/2022 12:00:00 AM |
6/15/2022 | 06/11/2022 | 6/11/2022 12:00:00 AM |
6/26/2022 | 06/25/2022 | 6/25/2022 12:00:00 AM |
7/9/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
7/22/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
7/23/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
7/27/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
8/2/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
8/8/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
8/19/2022 | 08/13/2022 | 8/13/2022 12:00:00 AM |
9/26/2022 | 09/24/2022 | 9/24/2022 12:00:00 AM |
10/14/2022 | 10/08/2022 | 10/8/2022 12:00:00 AM |
10/29/2022 | 10/29/2022 | 10/29/2022 12:00:00 AM |
start_of_week-mÄttet skapades i ett diagramobjektet genom att anvÀnda lunarweekstart()-funktionen och skicka datumfÀltet som funktionens argument.
lunarweekstart()-funktionen identifierar vilken sjudagarsperiod datumvÀrdet infaller och returnerar en tidsstÀmpel för den sista millisekunden av den veckan.
Diagram med exempel pÄ lunarweekstart()-funktionen, diagramobjekt

Transaktion 8189 Àgde rum 19 januari. lunarweekstart()-funktionen identifierar att sjudagarsperioden börjar 15 januari. DÀrför Àr start_of_week-vÀrdet för denna transaktion den första millisekunden denna dag, vilket Àr 15 januari 12:00:00 AM.
Exempel 5 â Scenario
Ăversikt
Ăppna dataladdningsredigeraren och lĂ€gg till laddningsskriptet nedan i ett nytt delavsnitt.
Laddningsskriptet innehÄller:
-
En datauppsÀttning som innehÄller lÄnesaldon som laddas i en tabell som heter Loans.
-
Data som bestÄr av lÄne-ID:n, saldot vid veckans 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 hittills under veckan.
Laddningsskript
Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
Resultat
Gör följande:
-
Ladda data och öppna ett ark. Skapa en ny tabell.
-
LÀgg till följande fÀlt som dimensioner.
-
loan_id
-
start_balance
-
-
Skapa dÀrefter följande mÄtt för att berÀkna ackumulerad rÀnta:
=start_balance*(rate*(today(1)-lunarweekstart(today(1)))/365)
-
Ange mÄttens Nummerformatering till Pengar.
loan_id | start_balance | =start_balance*(rate*(today(1)- lunarweekstart (today(1)))/365) |
---|---|---|
8188 | $10000.00 | $15.07 |
8189 | $15000.00 | $128.84 |
8190 | $17500.00 | $63.29 |
8191 | $21000.00 | $107.59 |
8192 | $90000.00 | $1139.18 |
Genom att anvÀnda dagens datum som enda argument returnerar lunarweekstart()-funktionen slutdatumet för det aktuella Äret. Genom att subtrahera resultatet frÄn det aktuella datumet returnerar uttrycket antalet dagar som har förflutit hittills denna vecka.
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 vecka.