Denna funktion returnerar ett värde som visar år och veckonummer med ett underliggande numeriskt värde som motsvarar en tidsmarkör för den första millisekunden på den första dagen i veckan som innehåller date.
weekname()-funktionen bestämmer i vilken vecka datumet infaller och returnerar veckans veckonummer och år. Veckans första dag bestäms av systemvariabeln FirstWeekDay. Du kan även ändra den första veckodagen genom att använda argumentet first_week_day i weekname()-funktionen.
I Qlik Sense, hämtas de regionala inställningarna när appen skapas, och motsvarande inställningar lagras i skriptet som miljövariabler.
En nordamerikansk apputvecklare får ofta Set BrokenWeeks=1; i skriptet, vilket motsvarar brutna veckor. En europeisk apputvecklare får ofta Set BrokenWeeks=0; i skriptet, vilket motsvarar obrutna veckor.
Om ditt program använder brutna veckor, börjar veckoräkningen den 1 januari och slutar dagen före systemvariabeln FirstWeekDay oavsett hur många dagar som har förlöpt.
Om din ansökan använder obrutna veckor kan vecka 1 börja föregående år eller under de första dagarna i januari. Detta beror på hur du använder systemvariablerna ReferenceDay och FirstWeekDay.
Exempel på veckonamnsfunktion
Datum
ISO-veckonamn
USA-veckonamn
Lör 2020 Dec 26
2020/52
2020/52
Sön 2020 Dec 27
2020/52
2020/53
Mån 2020 Dec 28
2020/53
2020/53
Tis 2020 Dec 29
2020/53
2020/53
Ons 2020 Dec 30
2020/53
2020/53
Tors 2020 Dec 31
2020/53
2020/53
Fre 2021 Jan 1
2020/53
2021/01
Lör 2021 Jan 2
2020/53
2021/01
Sön 2021 Jan 3
2020/53
2021/02
Mån 2021 Jan 4
2021/01
2021/02
Tis 2021 Jan 5
2021/01
2021/02
Användning
Funktionen weekname() är användbar när du vill jämföra sammanställningar efter veckor.
Till exempel om du vill se den totala försäljningen av produkter per vecka. För att upprätthålla samstämmighet med BrokenWeeks-miljövariabeln i applikationen använder du weekname() i stället för lunarweekname(). Om programmet använder obrutna veckor kan vecka 1 innehålla datum från december föregående år eller exkludera datum i januari innevarande år. Om programmet använder brutna veckor kan vecka 1 innehålla mindre än sju dagar.
Returnerad datatyp: dual
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.
broken_weeks
Om du inte anger broken_weeks används värdet för variabeln BrokenWeeks till att definiera om veckor är brutna eller inte.
Se BrokenWeeks för mer information om systemvariabeln
reference_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.
Se ReferenceDay för mer information om systemvariabeln
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.
Exemplen nedan antar:
Set FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Exempel på funktioner
Exempel
Resultat
weekname('01/12/2013')
Returnerar 2013/02.
weekname('01/12/2013', -1)
Returns 2013/01.
weekname('01/12/2013', 0, 1)
Returnerar 2013/02.
Exempel 1 – Datum utan 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 sista veckan år 2021 och de två första veckorna år 2022 läses in i en tabell som heter Transactions.
Systemvariabeln DateFormat som är inställd på MM/DD/YYYY-formatet.
Systemvariabeln BrokenWeeks som är inställd på 1.
Systemvariabeln FirstWeekDay som är inställd på 6.
En föregående laddning som innehåller följande:
weekday()-funktionen som är inställd som week_number-fält, som returnerar år och veckonummer när transaktionerna ägde rum.
weekname()-funktionen som är inställd som fältet som heter week_day, för att visa veckodagsvärdet för varje transaktionsdatum.
Laddningsskript
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(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
2021/53
8184
12/28/2021
tis
2021/53
8185
12/29/2021
ons
2021/53
8186
12/30/2021
tors
2021/53
8187
12/31/2021
fre
2021/53
8188
01/01/2022
lör
2022/01
8189
01/02/2022
sön
2022/02
8190
01/03/2022
mån
2022/02
8191
01/04/2022
tis
2022/02
8192
01/05/2022
ons
2022/02
8193
01/06/2022
tors
2022/02
8194
01/07/2022
fre
2022/02
8195
01/08/2022
lör
2022/02
8196
01/09/2022
sön
2022/03
8197
01/10/2022
mån
2022/03
8198
01/11/2022
tis
2022/03
8199
01/12/2022
ons
2022/03
8200
01/13/2022
tors
2022/03
8201
01/14/2022
fre
2022/03
week_number-fältet skapades i den föregående load-satsen genom att använda weekname()-funktionen och skicka datumfältet som funktionens argument.
weekname()-funktionen identifierar initialt vilken vecka datumvärdet infaller och returnerar veckotalet och året då transaktionen äger rum.
Systemvariabeln FirstWeekDay anger söndag som den första dagen i veckan. Systemvariabeln BrokenWeeks ställer in programmet för att använda brutna veckor, vilket innebär att vecka 1 börjar den 1 januari.
Vecka 1 börjar den 1 januari, vilket är en lördag, och därför returnerar transaktioner som sker på detta datum värdet 2022/01 (år och veckonummer).
Eftersom programmet använder brutna veckor och den första veckodagen är söndag, returnerar transaktioner från 2 till 8 januari 2022/02-värdet (vecka nummer 2 2022). Ett exempel på detta skulle vara transaktion 8192 som ägde rum den 5 januari och returnerar värdet 2022/02 för fältet week_number.
Exampel 2 – period_no
Översikt
Samma datauppsättning och scenario som det första exemplet används.
Men i det här exemplet är uppgiften att skapa ett fält, previous_week_number, som returnerar år och veckonummer innan transaktionerna ägde rum.
Öppna Skriptredigeraren och lägg till följande laddningsskript till en ny flik.
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
2021/52
8184
12/28/2021
tis
2021/52
8185
12/29/2021
ons
2021/52
8186
12/30/2021
tors
2021/52
8187
12/31/2021
fre
2021/52
8188
01/01/2022
lör
2021/52
8189
01/02/2022
sön
2021/53
8190
01/03/2022
mån
2021/53
8191
01/04/2022
tis
2021/53
8192
01/05/2022
ons
2021/53
8193
01/06/2022
tors
2021/53
8194
01/07/2022
fre
2021/53
8195
01/08/2022
lör
2022/01
8196
01/09/2022
sön
2022/02
8197
01/10/2022
mån
2022/02
8198
01/11/2022
tis
2022/02
8199
01/12/2022
ons
2022/02
8200
01/13/2022
tors
2022/02
8201
01/14/2022
fre
2022/02
Eftersom en period_no på -1 användes som förskjutningsargument i weekname()-funktionen så identifierar funktionen först veckan då transaktionerna äger rum. Den tittar sedan en vecka innan och identifierar den första millisekunden i den veckan.
Transaktion 8192 ägde rum den 5 januari 2022. weekname()-funktionen tittar en vecka före den 30 december 2021 och returnerar veckonummer och år för det datumet – 2021/53.
Exempel 3 – first_week_day
Översikt
Samma datauppsättning och scenario som det första exemplet används.
Men i det här exemplet är företagets policy att arbetsveckan ska börja på tisdag.
Öppna Skriptredigeraren och lägg till följande laddningsskript till en ny flik.
Laddningsskript
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) 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
2021/52
8184
12/28/2021
tis
2021/53
8185
12/29/2021
ons
2021/53
8186
12/30/2021
tors
2021/53
8187
12/31/2021
fre
2021/53
8188
01/01/2022
lör
2022/01
8189
01/02/2022
sön
2022/01
8190
01/03/2022
mån
2022/01
8191
01/04/2022
tis
2022/02
8192
01/05/2022
ons
2022/02
8193
01/06/2022
tors
2022/02
8194
01/07/2022
fre
2022/02
8195
01/08/2022
lör
2022/02
8196
01/09/2022
sön
2022/02
8197
01/10/2022
mån
2022/02
8198
01/11/2022
tis
2022/03
8199
01/12/2022
ons
2022/03
8200
01/13/2022
tors
2022/03
8201
01/14/2022
fre
2022/03
Eftersom first_week_date-argumentet för 1 används i weekname()-funktionen, använder det tisdag som den första dagen i veckan. Funktionen bestämmer därför att vecka 53 2021 börjar tisdagen den 28 december. Då programmet använder brutna veckor, börjar vecka 1 den 1 januari 2022 och slutar den sista millisekunden för måndagen den 3 januari 2022.
Transaktion 8192 ägde rum den 5 januari 2022. Således, om en first_week_day-parameter används för tisdag returnerar weekname()-funktionen 2022/02-värdet för week_number-fältet.
Exampel 4 – Diagramobjektexempel
Översikt
Samma datauppsättning och scenario som det första exemplet används.
I det här exemplet är dock datauppsättningen oförändrad och har lästs in i programmet. Beräkningen som returnerar ett årsnummer för 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 dessa fält som dimensioner:
id
date
=week_day (date)
För att beräkna veckostart för den vecka då en transaktion äger rum skapar du följande mått:
=weekname(date)
Resultattabell
id
date
=weekday(date)
=weekname(date)
8183
12/27/2021
mån
2021/53
8184
12/28/2021
tis
2021/53
8185
12/29/2021
ons
2021/53
8186
12/30/2021
tors
2021/53
8187
12/31/2021
fre
2021/53
8188
01/01/2022
lör
2022/01
8189
01/02/2022
sön
2022/02
8190
01/03/2022
mån
2022/02
8191
01/04/2022
tis
2022/02
8192
01/05/2022
ons
2022/02
8193
01/06/2022
tors
2022/02
8194
01/07/2022
fre
2022/02
8195
01/08/2022
lör
2022/02
8196
01/09/2022
sön
2022/03
8197
01/10/2022
mån
2022/03
8198
01/11/2022
tis
2022/03
8199
01/12/2022
ons
2022/03
8200
01/13/2022
tors
2022/03
8201
01/14/2022
fre
2022/03
week_number-fältet skapades som ett mått i diagramobjektet genom att använda weekname()-funktionen och skicka datumfältet som funktionens argument.
weekname()-funktionen identifierar initialt vilken vecka datumvärdet infaller och returnerar veckotalet och året då transaktionen äger rum.
Systemvariabeln FirstWeekDay anger söndag som den första dagen i veckan. Systemvariabeln BrokenWeeks ställer in programmet för att använda brutna veckor, vilket innebär att vecka 1 börjar den 1 januari.
Eftersom programmet använder brutna veckor och den första veckodagen är söndag, returnerar transaktioner från 2 till 8 januari värdet 2022/02, veckonummer 2 för år 2022. Observera att transaktion 8192 ägde rum den 5 januari och returnerar värdet 2022/02 för week_number-fältet.
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 transaktioner för sista veckan år 2019 och de två första veckorna år 2020 läses in i en tabell som heter Transactions.
Systemvariabeln BrokenWeeks som är inställd på 0.
Systemvariabeln ReferenceDay som är inställd på 2.
Systemvariabeln DateFormat som är inställd på MM/DD/YYYY-formatet.
För att beräkna total försäljning skapar du följande aggregeringsmått:
=sum(amount)
Ställ in måttens Nummerformatering på Pengar.
Resultattabell
weekname(date)
=sum(amount)
2019/52
$125.69
2020/01
$346.51
2020/02
$347.57
2020/03
$122.01
För att visa resultaten av att använda funktionen weekname() i det här scenariot lägger du till följande fält som en dimension:
date
Resultattabell med datumfält
weekname(date)
date
=sum(amount)
2019/52
12/27/2019
$58.27
2019/52
12/28/2019
$67.42
2020/01
12/29/2019
$23.80
2020/01
12/30/2019
$82.06
2020/01
12/31/2019
$40.56
2020/01
01/01/2020
$37.23
2020/01
01/02/2020
$17.17
2020/01
01/03/2020
$88.27
2020/01
01/04/2020
$57.42
2020/02
01/05/2020
$53.80
2020/02
01/06/2020
$82.06
2020/02
01/07/2020
$40.56
2020/02
01/08/2020
$53.67
2020/02
01/09/2020
$26.63
2020/02
01/10/2020
$72.48
2020/02
01/11/2020
$18.37
2020/03
01/12/2020
$45.26
2020/03
01/13/2020
$58.23
2020/03
01/14/2020
$18.52
Eftersom programmet använder obrutna veckor och vecka 1 kräver minst två dagar i januari på grund av systemvariabeln ReferenceDay, inkluderar vecka 1 av 2020 transaktioner från 29 december 2019.
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!