Denna funktion returnerar ett värde som motsvarar en tidsmarkör för den första millisekunden på den första dagen (måndag) i den kalendervecka som innehåller date. Det förvalda utdataformatet är det DateFormat som har definierats i skriptet.
weekstart()-funktionen bestämmer vilken vecka datumet infaller. Den returnerar sedan en tidsstämpel, i datumformat, för den första millisekunden av den veckan. Veckans första dag bestäms av miljövariabeln FirstWeekDay. Men den kan ersättas av first_week_day-argumentet i weekstart()-funktionen.
Argument
Argument
Beskrivning
timestamp
Det datum eller den tidsmarkör som ska utvärderas.
period_no
shift är ett heltal, där värdet 0 anger den vecka som innehåller date. Negativa värden i skift anger föregående veckor och positiva värden anger efterföljande veckor.
first_week_day
Anger dagen då veckan startar. Om utelämnat används värdet för variabeln FirstWeekDay.
De möjliga värdena first_week_day är 0 för måndag, 1 för tisdag, 2 för onsdag, 3 för torsdag, 4 för fredag, 5 för lördag och 6 för söndag.
Se FirstWeekDay för mer information om systemvariabeln.
Användning
weekstart()-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. Det kan exempelvis användas om en användare vill beräkna de totala lönerna som de anställda har tjänat hittills under veckan.
Följande exempel antar:
SET FirstWeekDay=0;
Exempel på funktioner
Exempel
Resultat
weekstart('01/12/2013')
Returnerar 01/07/2013.
weekstart('01/12/2013', -1 )
Returnerar 11/31/2012.
weekstart('01/12/2013', 0, 1)
Returnerar 01/08/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.
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:
Om du vill ha ISO-inställningar för veckor och veckonummer, ska du se till att ha följande i skriptet:
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
Om du vill ha USA-inställningar, ska du se till att ha följande i skriptet:
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
Exemplen ovan resulterar i följande från weekstart()-funktionen:
Exempel på veckostartsfunktion
Datum
ISO-veckostart
USA-veckostart
Lör 2020 Dec 26
2020-12-21
12/20/2020
Sön 2020 Dec 27
2020-12-21
12/27/2020
Mån 2020 Dec 28
2020-12-28
12/27/2020
Tis 2020 Dec 29
2020-12-28
12/27/2020
Ons 2020 Dec 30
2020-12-28
12/27/2020
Tors 2020 Dec 31
2020-12-28
12/27/2020
Fre 2021 Jan 1
2020-12-28
12/27/2020
Lör 2021 Jan 2
2020-12-28
12/27/2020
Sön 2021 Jan 3
2020-12-28
1/3/2021
Mån 2021 Jan 4
2021-01-04
1/3/2021
Tis 2021 Jan 5
2021-01-04
1/3/2021
Anteckning om informationVeckan börjar på måndagar i ISO-kolumnen och på söndagar i USA-kolumnen.
Exempel 1 – inga ytterligare argument
Översikt
Ö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 start_of_week skapas som returnerar en tidsmarkör för början av den vecka då transaktionerna ägde rum.
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
Resultattabell
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/24/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
start_of_week-fältet skapades i den föregående load-satsen genom att använda weekstart()-funktionen och skicka datumfältet som funktionens argument.
weekstart()-funktionen identifierar initialt vilken vecka datumvärdet infaller och returnerar en tidsstämpel för den första millisekunden av den veckan.
Transaktion 8191 ägde rum 5 februari. Systemvariabeln FirstWeekDay sätter söndag som första dag i veckan. weekstart()-funktionen identifierar att den första söndagen före 5 februari – och därmed början av veckan – inföll 30 januari. Därför returnerar start_of_week-värdet för den transaktionen den första millisekunden den dagen, vilket är 30 januari 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 previous_week_start skapas som returnerar tidsmarkören för början av kvartalet innan transaktionen ägde rum.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
previous_week_start
previous_week_start_timestamp
Resultattabell
date
previous_week_start
previous_week_start_timestamp
1/7/2022
12/26/2021
12/26/2021 12:00:00 AM
1/19/2022
01/09/2022
1/9/2022 12:00:00 AM
2/5/2022
01/23/2022
1/23/2022 12:00:00 AM
2/28/2022
02/20/2022
2/20/2022 12:00:00 AM
3/16/2022
03/06/2022
3/6/2022 12:00:00 AM
4/1/2022
03/20/2022
3/20/2022 12:00:00 AM
5/7/2022
04/24/2022
4/24/2022 12:00:00 AM
5/16/2022
05/08/2022
5/8/2022 12:00:00 AM
6/15/2022
06/05/2022
6/5/2022 12:00:00 AM
6/26/2022
06/19/2022
6/19/2022 12:00:00 AM
7/9/2022
06/26/2022
6/26/2022 12:00:00 AM
7/22/2022
07/10/2022
7/10/2022 12:00:00 AM
7/23/2022
07/10/2022
7/10/2022 12:00:00 AM
7/27/2022
07/17/2022
7/17/2022 12:00:00 AM
8/2/2022
07/24/2022
7/24/2022 12:00:00 AM
8/8/2022
07/31/2022
7/31/2022 12:00:00 AM
8/19/2022
08/07/2022
8/7/2022 12:00:00 AM
9/26/2022
09/18/2022
9/18/2022 12:00:00 AM
10/14/2022
10/02/2022
10/2/2022 12:00:00 AM
10/29/2022
10/16/2022
10/16/2022 12:00:00 AM
I det här fallet, eftersom ett period_no på -1 användes som förskjutningsargument i weekstart()-funktionen, identifierar funktionen först den vecka då transaktionerna äger rum. Den tittar sedan en vecka innan och identifierar den första millisekunden i den veckan.
Transaktion 8196 ägde rum den 15 juni. weekstart()-funktionen identifierar att veckan börjar 12 juni. Därför började den föregående veckan 5 juni 0:00:00; detta är det värde som returneras för previous_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. Men i det här exemplet behöver vi sätta tisdag som första dag i arbetsveckan.
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
Resultattabell
date
start_of_week
start_of_week_timestamp
1/7/2022
01/04/2022
1/4/2022 12:00:00 AM
1/19/2022
01/18/2022
1/18/2022 12:00:00 AM
2/5/2022
02/01/2022
2/1/2022 12:00:00 AM
2/28/2022
02/22/2022
2/22/2022 12:00:00 AM
3/16/2022
03/15/2022
3/15/2022 12:00:00 AM
4/1/2022
03/29/2022
3/29/2022 12:00:00 AM
5/7/2022
05/03/2022
5/3/2022 12:00:00 AM
5/16/2022
05/10/2022
5/10/2022 12:00:00 AM
6/15/2022
06/14/2022
6/14/2022 12:00:00 AM
6/26/2022
06/21/2022
6/21/2022 12:00:00 AM
7/9/2022
07/05/2022
7/5/2022 12:00:00 AM
7/22/2022
07/19/2022
7/19/2022 12:00:00 AM
7/23/2022
07/19/2022
7/19/2022 12:00:00 AM
7/27/2022
07/26/2022
7/26/2022 12:00:00 AM
8/2/2022
08/02/2022
8/2/2022 12:00:00 AM
8/8/2022
08/02/2022
8/2/2022 12:00:00 AM
8/19/2022
08/16/2022
8/16/2022 12:00:00 AM
9/26/2022
09/20/2022
9/20/2022 12:00:00 AM
10/14/2022
10/11/2022
10/11/2022 12:00:00 AM
10/29/2022
10/25/2022
10/25/2022 12:00:00 AM
Eftersom first_week_date-argumentet på 1 används i weekstart()-funktionen i det här fallet, sätts tisdag som första dag i veckan.
Transaktion 8191 ägde rum 5 februari. weekstart()-funktionen identifierar att den första tisdagen före det här datumet – och därför början av veckan och det returnerade värdet – var 1 februari 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 returnerar en tidsmarkör för början veckan då transaktionerna ägde rum 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.
För att beräkna veckostart för den vecka då en transaktion äger rum lägger du till följande mått:
=weekstart(date)
=timestamp(weekstart(date))
Resultattabell
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/24/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
start_of_week-måttet skapades i diagramobjektet genom att använda weekstart()-funktionen och skicka date-fältet som funktionens argument.
weekstart()-funktionen identifierar initialt vilken vecka datumvärdet infaller och returnerar en tidsstämpel för den första millisekunden av den veckan.
Transaktion 8191 ägde rum 5 februari. Systemvariabeln FirstWeekDay sätter söndag som första dag i veckan. weekstart()-funktionen identifierar att den första söndagen före 5 februari – och därför början av veckan – var 30 januari. Därför returnerar start_of_week-värdet för denna transaktion den första millisekunden denna dag, vilket är 30 januari 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 läses in i en tabell som heter Payroll.
Data bestående av anställnings-ID, anställdas namn och den dagliga lönen som varje anställd tjänar.
Anställda börjar arbeta på måndag och arbetar sex dagar per vecka. Systemvariabeln FirstWeekDay får inte ändras.
Slutanvändaren vill ha ett diagramobjekt som visar intjänade löner under veckan fram till dagens datum efter anställnings-ID och anställdas namn.
weekstart()-funktionen sätter måndagen till första dag i veckan genom att använda dagens datum som sitt första argument och 0 som sitt tredje argument, sätter måndag till första dag i veckan och returnerar startdatumet i den aktuella veckan. Genom att subtrahera resultatet från det aktuella datumet returnerar uttrycket sedan antalet dagar som har förflutit hittills denna vecka.
Villkoret utvärderar sedan om det har varit mer än sex dagar den här veckan. I så fall multipliceras den anställdes day_rate med 6 dagar. Om inte, så multipliceras day_rate med antalet dagar som har inträffat så här långt i veckan.
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!