Denna funktion returnerar ett värde som motsvarar en tidsmarkör för den sista millisekunden på den sista dagen i den kalendervecka som innehåller date. Det förvalda utdataformatet blir det DateFormat som har definierats i skriptet.
weekend()-funktionen bestämmer vilken vecka datumet infaller. Den returnerar sedan en tidsstämpel, i datumformat, för den sista 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 weekend()-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 för 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
weekend()-funktionen används vanligtvis som en del av ett uttryck när användaren vill att beräkningen ska använda det återstående antalet dagar i veckan för det angivna datumet. Det kan till exempel användas om en användare vill beräkna den totala ränta som ännu inte uppkommit under veckan.
Följande exempel antar:
SET FirstWeekDay=0;
Exempel
Resultat
weekend('01/10/2013')
Returnerar 01/12/2013 23:59:59.
weekend('01/10/2013', -1)
Returnerar 01/05/2013 23:59:59..
weekend('01/10/2013', 0, 1)
Returnerar 01/14/2013 23:59:59.
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 weekend()-funktionen:
Exempel på veckoslutsfunktion
Datum
ISO-veckoslut
USA-veckoslut
Lör 2020 Dec 26
2020-12-27
12/26/2020
Sön 2020 Dec 27
2020-12-27
1/2/2021
Mån 2020 Dec 28
2021-01-03
1/2/2021
Tis 2020 Dec 29
2021-01-03
1/2/2021
Ons 2020 Dec 30
2021-01-03
1/2/2021
Tors 2020 Dec 31
2021-01-03
1/2/2021
Fre 2021 Jan 1
2021-01-03
1/2/2021
Lör 2021 Jan 2
2021-01-03
1/2/2021
Sön 2021 Jan 3
2021-01-03
1/9/2021
Mån 2021 Jan 4
2021-01-10
1/9/2021
Tis 2021 Jan 5
2021-01-10
1/9/2021
Anteckning om informationVeckosluten är på söndagar i ISO-kolumnen och på lördagar i USA-kolumnen.
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 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 end_of_week skapas som returnerar en tidsmarkör för slutet 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
end_of_week
end_of_week_timestamp
Resultattabell
date
end_of_week
end_of_week_timestamp
1/7/2022
01/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
2022-03-19 23:59:59
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
end_of_week-fältet skapades i den föregående load-satsen genom att använda weekend()-funktionen och skicka datumfältet som funktionens argument.
weekend()-funktionen identifierar vilken vecka datumvärdet infaller och returnerar en tidsstämpel för den sista millisekunden av den veckan.
Transaktion 8191 ägde rum 5 februari. Systemvariabeln FirstWeekDay sätter söndag som första dag i veckan. weekend()-funktionen identifierar att den första lördagen efter 5 februari – och därmed slutet av veckan – inföll 5 februari. Därför returnerar end_of_week-värdet för den transaktionen den sista millisekunden den dagen, vilket är 5 februari 23:59:59.
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_end skapas som returnerar tidsmarkören för början av veckan 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_end
previous_week_end_timestamp
Resultattabell
date
end_of_week
end_of_week_timestamp
1/7/2022
01/01/2022
1/1/2022 11:59:59 PM
1/19/2022
01/15/2022
1/15/2022 11:59:59 PM
2/5/2022
01/29/2022
1/29/2022 11:59:59 PM
2/28/2022
02/26/2022
2/26/2022 11:59:59 PM
3/16/2022
03/12/2022
3/12/2022 11:59:59 PM
4/1/2022
03/26/2022
3/26/2022 11:59:59 PM
5/7/2022
04/30/2022
4/30/2022 11:59:59 PM
5/16/2022
05/14/2022
5/14/2022 11:59:59 PM
6/15/2022
06/11/2022
6/11/2022 11:59:59 PM
6/26/2022
06/25/2022
6/25/2022 11:59:59 PM
7/9/2022
07/02/2022
7/2/2022 11:59:59 PM
7/22/2022
07/16/2022
7/16/2022 11:59:59 PM
7/23/2022
07/16/2022
7/16/2022 11:59:59 PM
7/27/2022
07/23/2022
7/23/2022 11:59:59 PM
8/2/2022
07/30/2022
7/30/2022 11:59:59 PM
8/8/2022
08/06/2022
8/6/2022 11:59:59 PM
8/19/2022
08/13/2022
8/13/2022 11:59:59 PM
9/26/2022
09/24/2022
9/24/2022 11:59:59 PM
10/14/2022
10/08/2022
10/8/2022 11:59:59 PM
10/29/2022
10/22/2022
10/22/2022 11:59:59 PM
Eftersom ett period_no på -1 användes som förskjutningsargument i weekend()-funktionen i det här fallet identifierar funktionen först den vecka då transaktionerna äger rum. Den tittar sedan en vecka innan och identifierar den sista millisekunden i den veckan.
Transaktion 8196 ägde rum den 15 juni. weekend()-funktionen identifierar att veckan börjar 12 juni. Därför slutar den föregående veckan 11 juni 11:59:59; detta är det värde som returneras för previous_week_end-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
end_of_week
end_of_week_timestamp
Resultattabell
date
end_of_week
end_of_week_timestamp
1/7/2022
01/10/2022
1/10/2022 11:59:59 PM
1/19/2022
01/24/2022
1/24/2022 11:59:59 PM
2/5/2022
02/07/2022
2/7/2022 11:59:59 PM
2/28/2022
02/28/2022
2/28/2022 11:59:59 PM
3/16/2022
03/21/2022
3/21/2022 11:59:59 PM
4/1/2022
04/04/2022
4/4/2022 11:59:59 PM
5/7/2022
05/09/2022
5/9/2022 11:59:59 PM
5/16/2022
05/16/2022
5/16/2022 11:59:59 PM
6/15/2022
06/20/2022
6/20/2022 11:59:59 PM
6/26/2022
06/27/2022
6/27/2022 11:59:59 PM
7/9/2022
07/11/2022
7/11/2022 11:59:59 PM
7/22/2022
07/25/2022
7/25/2022 11:59:59 PM
7/23/2022
07/25/2022
7/25/2022 11:59:59 PM
7/27/2022
08/01/2022
8/1/2022 11:59:59 PM
8/2/2022
08/08/2022
8/8/2022 11:59:59 PM
8/8/2022
08/08/2022
8/8/2022 11:59:59 PM
8/19/2022
08/22/2022
8/22/2022 11:59:59 PM
9/26/2022
09/26/2022
9/26/2022 11:59:59 PM
10/14/2022
10/17/2022
10/17/2022 11:59:59 PM
10/29/2022
10/31/2022
10/31/2022 11:59:59 PM
Eftersom first_week_date-argumentet på 1 används i weekend()-funktionen i det här fallet, sätts tisdag som första dag i veckan.
Transaktion 8191 ägde rum 5 februari. weekend()-funktionen identifierar att den första måndagen efter det här datumet – och därför slutet av veckan och det returnerade värdet – var 6 februari 23:59:59.
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 slutet av 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:
=weekend(date)
=timestamp(weekend(date))
Resultattabell
date
=weekend(date)
=timestamp(weekend(date))
1/7/2022
01/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
2022-03-19 23:59:59
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
end_of_week-måttet skapades i ett diagramobjektet genom att använda weekend()-funktionen och skicka datumfältet som funktionens argument. weekend()-funktionen identifierar vilken vecka datumvärdet infaller och returnerar en tidsstämpel för den sista millisekunden av den veckan.
Transaktion 8191 ägde rum 5 februari. Systemvariabeln FirstWeekDay sätter söndag som första dag i veckan. weekend()-funktionen identifierar att den första lördagen efter 5 februari – och därmed slutet av veckan – inföll 5 februari. Därför returnerar end_of_week-värdet för den transaktionen den sista millisekunden den dagen, vilket är 5 februari 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.
Data bestående av anställnings-ID, anställdas namn och de genomsnittliga dagliga kostnadsanspråken 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 veckan.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
employee_id
employee_name
Skapa sedan ett mått för att beräkna den ackumulerade räntan:
=(weekend(today(1))-today(1))*avg_daily_claim
Ange måttens Nummerformatering till Pengar.
Resultattabell
employee_id
employee_name
=(weekend(today(1))-today(1))*avg_daily_claim
182
Mark
$90.00
183
Deryck
$75.00
184
Dexter
$75.00
185
Sydney
$162.00
186
Agatha
$108.00
weekend()-funktionen returnerar slutdatumet för den aktuella veckan genom att använda dagens datum som enda argument. Sedan returnerar uttrycket antalet dagar som återstår av denna vecka genom att subtrahera dagens datum från årets slutdatum.
Detta värde multipliceras sedan med det genomsnittliga dagliga kostnadsanspråket från 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 den återstående 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!