weekname - skript- och diagramfunktion
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.
Syntax:
WeekName(date[, period_no[,first_week_day]])
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.
Som standard använder Qlik Sense-program brutna veckor (definierade av systemvariabeln BrokenWeeks ) och därför börjar veckoräkningen den 1 januari och slutar dagen före systemvariabeln FirstWeekDay oavsett hur många dagar som har inträffat.
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.
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 | Beskrivning |
---|---|
date | 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. |
Du kan använda följande värden för att ställa in vilken dag veckan börjar i argumentet first_week_day:
Dag | Värde |
---|---|
Måndag | 0 |
Tisdag | 1 |
Onsdag | 2 |
Torsdag | 3 |
Fredag | 4 |
Lördag | 5 |
Söndag | 6 |
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 | 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
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.
Laddningsskript
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_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
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
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.
Laddningsskript
SET BrokenWeeks=1;
Transactions:
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 (date)
För att beräkna veckostart för den vecka då en transaktion äger rum skapar du följande mått:
=weekname(date)
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.
Laddningsskript
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell.
Skapa en beräknad dimension med följande uttryck:
=weekname(date)
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.
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
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.