week - skript- och diagramfunktion
Denna funktion returnerar ett heltal som motsvarar veckonumret som motsvarar angivet datum.
Syntax:
week(timestamp [, first_week_day [, broken_weeks [, reference_day]]])
Returnerad datatyp: heltal
Argument | Beskrivning |
---|---|
timestamp | Det datum eller den tidsmarkör som ska utvärderas. |
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 |
week()-funktionen bestämmer i vilken vecka datumet infaller och returnerar veckans nummer.
I Qlik Sense, hämtas de regionala inställningarna när appen skapas, och motsvarande inställningar lagras i skriptet som miljövariabler. Dessa används för att fastställa veckonumret.
Detta innebär att de flesta europeiska apputvecklare får följande miljövariabler, vilket motsvarar ISO 8601-definitionen:
En nordamerikansk apputvecklare får ofta följande miljövariabler:
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 week()-funktionen.
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 ditt program 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 miljövariablerna FirstWeekDay och ReferenceDay.
Användning
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.
Till exempel om du vill se den totala försäljningen av produkter per vecka.
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 färre än sju dagar.
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. Mer information finns i Ändra regioninställningar för appar och skript.
Regionala standardinställningar i appar baseras på användarprofilen. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Cloud användargränssnittet. Qlik Cloud kommer att visas på samma språk som webbläsaren du använder.
Om du skapar appar, kan du ange standardregionen för de appar du skapar. Mer information finns här Ställa in önskade regioninställningar för att skapa appar och skript i Qlik Cloud-analys.
Exemplen nedan antar
Exempel | Resultat |
---|---|
week('12/28/2021') |
Returnerar 52. |
week(44614) | Returnerar 8, eftersom detta är serienumret för 2022-02-22. |
week('01/03/2021') | Returnerar 53. |
week('01/03/2021',6) | Returnerar 1. |
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
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ända week()-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
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
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
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.
Laddningsskript
Transactions:
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
Gör följande:
-
Ladda data och öppna ett ark. Skapa en ny tabell.
-
Lägg till följande fält som dimensioner:
-
id
-
date
-
-
Skapa sedan följande mått:
=week (date)
-
Skapa ett mått, week_day som visar veckodagsvärdet vör varje transaktionsdatum:
=weekday(date)
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.
Laddningsskript
SET BrokenWeeks=1;
SET ReferenceDay=0;
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
Gör följande:
-
Ladda data och öppna ett ark. Skapa en ny tabell.
-
Skapa följande beräknade dimension:
=week(date)
-
Skapa sedan följande aggregeringsmått:
=sum(amount)
-
Ange måttens Nummerformatering till Pengar.
-
Välj sorteringsmenyn och ta bort anpassad sortering för den beräknade dimensionen.
-
Avmarkera alternativen Sortera numeriskt och Sortera alfabetiskt.
week(date) | sum(amount) |
---|---|
52 | $125.69 |
53 | $146.42 |
1 | $200.09 |
2 | $347.57 |
3 | $122.01 |