Denna funktion returnerar ett heltal som motsvarar veckonumret enligt ISO 8601. Veckonumret beräknas utifrån datumtolkningen av uttrycket, enligt standardtalformatet.
Veckonummerräkningen börjar 1 januari (eftersom Qlik Sense är inställd att använda brutna veckor som standard). Den första veckan slutar dagen före systemvariabeln FirstWeekDay, oavsett hur många dagar som har passerat den veckan. Systemvariabeln FirstWeekDay kan ersättas inom week()-funktionen med argumentet first_week_day.
week()-funktionen ger också möjlighet att ange huruvida brutna eller obrutna veckor ska användas med argumentet broken_weeks. Om funktionen med brutna veckor används måste vecka 1 innehålla ett visst antal dagar i januari enligt vad som anges i systemvariabeln ReferenceDay. Därför kan vecka 1 potentiellt börja i december eller alternativt veckorna 52 eller 53 fortsätta in i januari. slutligen ger argumentet reference_day möjlighet att låta funktionen åsidosätta systemvariabeln ReferenceDay.
Till skillnad från weekname()-funktionen returnerar inte week()-funktionen årets värde. Det ger möjlighet till aggregeringar som jämför veckor över år.
Det finns fyra argument som kan användas i den här funktionen.
Argument 1: tidsmarkör
Detta är det datum som ska utvärderas som en tidsmarkör eller ett uttryck som resulterar i en tidsmarkör, och som ska konverteras, till exempel 2012-10-12.
Argument 2: first_week_day
Om du inte specificerar first_week_day, kommer värdet för variabeln FirstWeekDay att användas som den första dagen i veckan.
Om du vill använda en annan dag som den första dagen i veckan ska du ställa in first_week_day till:
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
6 för söndag
Den siffra som returneras av funktionen kommer nu att använda den första dag i veckan som du har ställt in med first_week_day.
Om du inte specificerar reference_day används värdet för variabeln ReferenceDay till att definiera vilken dag i januari som ska ställas in som referensdag för att definiera vecka 1. Qlik Sense-funktioner använder som standard 4 som referensdag. Det betyder att vecka 1 måste innehålla 4 januari, eller med andra ord, vecka 1 måste alltid bestå av minst 4 dagar i januari.
Följande värden kan användas för att ställa in en annan referensdag.
Funktionen The week() är användbar när du vill jämföra sammanställningar efter veckor. Den kan till exempel användas om du vill se den totala försäljningen av produkter per vecka. week()-funktionen väljs före weekname() när användaren inte nödvändigtvis vill att beräkningen ska använda programmets systemvariabler BrokenWeeks, FirstWeekDay eller ReferenceDay.
week()-funktionen väljs dessutom när du vill jämföra över flera år. Genom att använda week()-funktionen kan användaren skapa sin egen kombination av de här variablerna som ska användas i instanser när funktionen används.
Dessa dimensioner kan skapas antingen i laddningsskriptet genom att använda funktionen för att skapa ett fält i en Master Calendar-tabell, eller använda den direkt i ett diagram som en beräknad dimension.
Exempel på funktioner
Exempel
Resultat
week(
'10/12/2012')
Returnerar 41.
week(
'35648')
Returnerar 32, eftersom 35648 = 1997-08-06
week('10/12/2012', 0, 1)
returnerar 42
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 1 – Standardsystemvariabler
Ö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 sista veckan år 2021 och de två första veckorna å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 week_number skapas som returnerar det år och veckonummer då transaktionen ägde rum.
Ett fält week_day skapas som visar veckodagsvärdet för varje transaktionsdatum.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
week_day
week_number
Resultattabell
id
date
week_day
week_number
8183
12/27/2021
mån
53
8184
12/28/2021
tis
53
8185
12/29/2021
ons
53
8186
12/30/2021
tors
53
8187
12/31/2021
fre
53
8188
01/01/2022
lör
1
8189
01/02/2022
sön
2
8190
01/03/2022
mån
2
8191
01/04/2022
tis
2
8192
01/05/2022
ons
2
8193
01/06/2022
tors
2
8194
01/07/2022
fre
2
8195
01/08/2022
lör
2
8196
01/09/2022
sön
3
8197
01/10/2022
mån
3
8198
01/11/2022
tis
3
8199
01/12/2022
ons
3
8200
01/13/2022
tors
3
8201
01/14/2022
fre
3
week_number-fältet skapades i den föregående load-satsen genom att användaweek() -funktionen och skicka date-fältet som funktionens argument.
Inga andra parametrar skickas till funktoinen och därför gäller följande standardvariabler som påverkar week()-funktionen:
BrokenWeeks: Veckoräkningen börjar 1 januari
FirstWeekDay: Veckans första dag är söndag
Eftersom programmet använder standardsystemvariabeln BrokenWeeks börjar vecka 1 den 1 januari, en lördag.
På grund av standardsystemvariabeln FirstWeekDay börjar veckorna på en söndag. Den första söndagen efter 1 januari inträffar 2 januari. Därför börjar vecka 2 då.
Exempel 2 – first_week_day
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Ett fält week_number skapas som returnerar det år och veckonummer då transaktionen ägde rum.
Ett fält week_day skapas som visar veckodagsvärdet för varje transaktionsdatum.
I det här exemplet vill vi ställa in att arbetsveckan börjar på tisdagar.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
week_day
week_number
Resultattabell
id
date
week_day
week_number
8183
12/27/2021
mån
52
8184
12/28/2021
tis
53
8185
12/29/2021
ons
53
8186
12/30/2021
tors
53
8187
12/31/2021
fre
53
8188
01/01/2022
lör
1
8189
01/02/2022
sön
1
8190
01/03/2022
mån
1
8191
01/04/2022
tis
2
8192
01/05/2022
ons
2
8193
01/06/2022
tors
2
8194
01/07/2022
fre
2
8195
01/08/2022
lör
2
8196
01/09/2022
sön
2
8197
01/10/2022
mån
2
8198
01/11/2022
tis
3
8199
01/12/2022
ons
3
8200
01/13/2022
tors
3
8201
01/14/2022
fre
3
Programmet använder fortfarande brutna veckor. Men argumentet first_week_day har ställts in till 1 i week()-funktionen. Detta ställer in veckans första dag till en tisdag.
Programmet använder standardsystemvariabeln BrokenWeeks, så vecka 1 börjar 1 januari, en lördag.
first_week_day-argumentet week()-funktionen ställer in veckans första dag till en tisdag. Därför börjar vecka 53 den 28 december 2021.
Men eftersom funktionen fortfarande använder brutna veckor kommer vecka 1 bara att vara två dagar lång, eftersom den första tisdagen efter 1 januari inträffar 3 januari.
Exempel 3 – unbroken_weeks
Ö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 använder vi obrutna veckor.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
week_day
week_number
Resultattabell
id
date
week_day
week_number
8183
12/27/2021
mån
52
8184
12/28/2021
tis
52
8185
12/29/2021
ons
52
8186
12/30/2021
tors
52
8187
12/31/2021
fre
52
8188
01/01/2022
lör
52
8189
01/02/2022
sön
1
8190
01/03/2022
mån
1
8191
01/04/2022
tis
1
8192
01/05/2022
ons
1
8193
01/06/2022
tors
1
8194
01/07/2022
fre
1
8195
01/08/2022
lör
1
8196
01/09/2022
sön
2
8197
01/10/2022
mån
2
8198
01/11/2022
tis
2
8199
01/12/2022
ons
2
8200
01/13/2022
tors
2
8201
01/14/2022
fre
2
Parametern first_week_date sätts till 1, vilket innebär att tisdag blir första dagen i veckan. Parametern broken_weeks sätts till 0, vilket tvingar funktionen att använda obrutna veckor. Slutligen sätter den tredje parametern reference_day till 2.
Parametern first_week_date sätts till 6, vilket innebär att söndag blir första dagen i veckan. Parametern broken_weeks sätts till 0, vilket tvingar funktionen att använda obrutna veckor.
Eftersom obrutna veckor används börjar inte vecka 1 nödvändigtvis 1 januari, men den måste i stället ha minst fyra dagar. I datauppsättningen slutar vecka 52 därför på lördag 1 januari 2022. Vecka 1 börjar sedan vid systemvariabeln FirstWeekDay, som är söndag 2 januari. Den här veckan slutar följande lördag, 8 januari.
Exempel 4 – reference_day
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Samma datauppsättning och scenario som i det tredje exemplet.
Ett fält week_number skapas som returnerar det år och veckonummer då transaktionen ägde rum.
Ett fält week_day skapas som visar veckodagsvärdet för varje transaktionsdatum.
Dessutom måste följande villkor vara uppfyllda:
Arbetsveckan börjar på en tisdag.
Företaget använder obrutna veckor.
reference_day-värdet är2. Med andra ord kommer det minsta möjliga antalet dagar i januari i vecka 1 vara 2.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
week_day
week_number
Resultattabell
id
date
week_day
week_number
8183
12/27/2021
mån
52
8184
12/28/2021
tis
1
8185
12/29/2021
ons
1
8186
12/30/2021
tors
1
8187
12/31/2021
fre
1
8188
01/01/2022
lör
1
8189
01/02/2022
sön
1
8190
01/03/2022
mån
1
8191
01/04/2022
tis
2
8192
01/05/2022
ons
2
8193
01/06/2022
tors
2
8194
01/07/2022
fre
2
8195
01/08/2022
lör
2
8196
01/09/2022
sön
2
8197
01/10/2022
mån
2
8198
01/11/2022
tis
3
8199
01/12/2022
ons
3
8200
01/13/2022
tors
3
8201
01/14/2022
fre
3
Parametern first_week_date sätts till 1, vilket innebär att tisdag blir första dagen i veckan. Parametern broken_weeks sätts till 0, vilket tvingar funktionen att använda obrutna veckor. Slutligen sätter den tredje parametern reference_day-parametern till 2.
Eftersom funktionen använder obrutna veckor och ett reference_day-värde på 2 som parameter behöver det bara ingå två dagar i januari i vecka 1. Eftersom den första dagen i veckan är tisdag börjar vecka 1 den 28 december 2021 och slutar måndag 3 januari 2022.
Exempel 5 – exempel på diagramobjekt
Ö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 veckonumret skapas som ett mått i ett diagramobjekt.
Skapa ett mått, week_day som visar veckodagsvärdet vör varje transaktionsdatum:
=weekday(date)
Resultattabell
id
date
=week(date)
=weekday(date)
8183
12/27/2021
53
mån
8184
12/28/2021
53
tis
8185
12/29/2021
53
ons
8186
12/30/2021
53
tors
8187
12/31/2021
53
fre
8188
01/01/2022
1
lör
8189
01/02/2022
2
sön
8190
01/03/2022
2
mån
8191
01/04/2022
2
tis
8192
01/05/2022
2
ons
8193
01/06/2022
2
tors
8194
01/07/2022
2
fre
8195
01/08/2022
2
lör
8196
01/09/2022
3
sön
8197
01/10/2022
3
mån
8198
01/11/2022
3
tis
8199
01/12/2022
3
ons
8200
01/13/2022
3
tors
8201
01/14/2022
3
fre
week_number-fältet skapades i den föregående load-satsen genom att användaweek() -funktionen och skicka date-fältet som funktionens argument.
Inga andra parametrar skickas till funktoinen och därför gäller följande standardvariabler som påverkar week()-funktionen:
BrokenWeeks: Veckoräkningen börjar 1 januari
FirstWeekDay: Veckans första dag är söndag
Eftersom programmet använder standardsystemvariabeln BrokenWeeks börjar vecka 1 den 1 januari, en lördag.
På grund av standardsystemvariabeln FirstWeekDay börjar veckorna på en söndag. Den första söndagen efter 1 januari inträffar 2 januari. Därför börjar vecka 2 då.
Exempel 6 – scenario
Ö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 sista veckan år 2019 och de två första veckorna år 2020 som läses in i en tabell som heter Transactions.
Datumfältet tillhandahålls i formatet (ÅÅÅÅ-MM-DD) i systemvariabeln DateFormat.
Programmet använder främst brutna veckor i sin instrumentpanel. Slutanvändaren vill emellertid ha ett diagramobjekt som visar den totala försäljningen per vecka med obrutna veckor. Referensdagen ska vara 2 januari, med veckans början på tisdag. Detta kan uppnås även när denna dimension inte är tillgänglig i datamodellen, med hjälp av week()-funktionen som en beräknad dimension i diagrammet.
Välj sorteringsmenyn och ta bort anpassad sortering för den beräknade dimensionen.
Avmarkera alternativen Sortera numeriskt och Sortera alfabetiskt.
Resultattabell
week(date)
sum(amount)
52
$125.69
53
$146.42
1
$200.09
2
$347.57
3
$122.01
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!