Denna funktion returnerar True om timestamp ligger inom den del av veckan som innehåller base_date fram till och inklusive den sista millisekunden av base_date.
I Qlik Sense, representeras det booleska sanna värdet av -1, och det falska värdet representeras av 0.
inweektodate()-funktionen använder base_date-parametern för att identifiera ett maximalt gränsdatum för ett veckosegment, såväl som dess motsvarande datum för veckans början, vilket är baserat på systemvariabelnFirstWeekDay (eller användardefinierad first_week_day-parameter ). När detta veckosegment har definierats returnerar funktionen ett booleskt resultat när du jämför de föreskrivna datumvärdena med det segmentet.
Användning
Funktionen inweektodate() returnerar ett booleskt resultat. Vanligtvis kommer denna typ av funktion att användas som ett villkor i ett if-uttryck. Detta returnerar en aggregering eller beräkning beroende på om ett utvärderat datum inträffade i veckan till och med ett specifikt datum.
inweektodate()-funktionen kan till exempel användas för att beräkna alla försäljningar gjorda under en angiven vecka fram till ett visst datum.
Argument
Argument
Beskrivning
timestamp
Det datum du vill jämföra mot base_date.
base_date
Datum som används för att utvärdera veckan.
period_no
Veckans startpunkt kan flyttas med period_no. period_no är ett heltal där värdet 0 anger den vecka som innehåller base_date. Negativa värden i period_no anger föregående veckor och positiva värden anger efterföljande veckor.
first_week_day
Som standard är den första dagen i veckan söndag (vilket bestäms av systemvariabeln FirstWeekDay), med start vid midnatt mellan lördag och söndag. first_week_day-parametern ersätter FirstWeekDay-variabeln. Om du vill att veckan ska starta en annan dag anger du en flagga mellan 0 och 6.
För en vecka som börjar på måndag och slutar på söndag, använd flaggan 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.
Exempel på funktioner
Exempel
Interaktion
inweektodate('01/12/2006', '01/12/2006', 0)
Returnerar TRUE.
inweektodate('01/12/2006', '01/11/2006', 0)
Returnerar FALSE.
inweektodate('01/12/2006', '01/18/2006', -1)
Returnerar FALSE. Eftersom period_no är angett som -1, är de faktiska data som timestamp jämförs med 01/11/2006.
inweektodate('01/11/2006', '01/12/2006', 0, 3 )
Returnerar FALSE, eftersom first_week_day har angetts som 3 (torsdag), vilket gör 01/12/2006 till den första dagen i veckan efter veckan som innehåller 01/12/2006.
Dessa ämnen kan hjälpa dig att arbeta med den här funktionen:
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.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller transaktioner för månaden januari 2022 som laddas i en tabell som heter Transactions.
Datafältet tillhandahålls i TimestampFormat='M/D/YYYY h:mm:ss[.fff]'-formatet.
Skapandet av ett fält, in_week_to_date, som bestämmer vilka transaktioner som ägde rum under kvartalet fram till den 14 januari 2022.
Skapande av ett ytterligare fält benämnt weekday, med användning av weekday()-funktionen. Detta nya fält skapas för att visa vilken veckodag som motsvarar varje datum.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
week_day
in_week_to_date
Resultattabell
date
week_day
in_week_to_date
2022-01-02 12:22:06
sön
0
2022-01-05 01:02:30
ons
0
2022-01-06 15:36:20
tors
0
2022-01-08 10:58:35
lör
0
2022-01-09 08:53:32
sön
-1
2022-01-10 21:13:01
mån
-1
2022-01-11 00:57:13
tis
-1
2022-01-12 09:26:02
ons
-1
2022-01-13 15:05:09
tors
-1
2022-01-14 18:44:57
fre
-1
2022-01-15 06:10:46
lör
0
2022-01-16 06:39:27
sön
0
2022-01-17 10:44:16
mån
0
2022-01-18 18:48:17
tis
0
2022-01-26 04:36:03
ons
0
2022-01-27 08:07:49
tors
0
2022-01-28 12:24:29
fre
0
2022-01-30 11:56:56
sön
0
2022-01-30 14:40:19
sön
0
2022-01-31 05:28:21
mån
0
in_week_to_date-fältet skapas i föregående LOAD-sats med hjälp av funktionen inweektodate(). Det första argumentet som anges identifierar vilket fält som utvärderas. Det andra argumentet är ett hårdkodat datum för den 14 januari, vilket är base_date som identifierar vilken vecka som ska segmenteras samt definierar slutgränsen för det segmentet. period_no-värdet 0 är det sista argumentet, vilket betyder att funktionen inte jämför veckorna före eller efter den segmenterade veckan.
Systemvariabeln FirstWeekDay bestämmer att veckor börjar på en söndag och slutar på en lördag. Därför skulle januari delas upp i veckor enligt diagrammet nedan, där datumen mellan 9 och 14 januari ger den giltiga perioden för inweekdodate()-beräkningen:
Alla transaktioner som sker mellan 9 och 14 januari returnerar det booleska resultatet TRUE. Transaktioner före och efter datumen ger det booleska resultatet FALSE.
Exampel 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.
Skapandet av ett fält, prev_week_to_date, som bestämmer vilka transaktioner som ägde rum en hel vecka innan veckosegmentet som avslutas den 14 januari 2022.
Skapande av ett ytterligare fält benämnt weekday, med användning av weekday()-funktionen. Detta nya fält skapas för att visa vilken veckodag som motsvarar varje datum.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
week_day
prev_week_to_date
Resultattabell
date
week_day
prev_week_to_date
2022-01-02 12:22:06
sön
-1
2022-01-05 01:02:30
ons
-1
2022-01-06 15:36:20
tors
-1
2022-01-08 10:58:35
lör
0
2022-01-09 08:53:32
sön
0
2022-01-10 21:13:01
mån
0
2022-01-11 00:57:13
tis
0
2022-01-12 09:26:02
ons
0
2022-01-13 15:05:09
tors
0
2022-01-14 18:44:57
fre
0
2022-01-15 06:10:46
lör
0
2022-01-16 06:39:27
sön
0
2022-01-17 10:44:16
mån
0
2022-01-18 18:48:17
tis
0
2022-01-26 04:36:03
ons
0
2022-01-27 08:07:49
tors
0
2022-01-28 12:24:29
fre
0
2022-01-30 11:56:56
sön
0
2022-01-30 14:40:19
sön
0
2022-01-31 05:28:21
mån
0
period_no-värdet -1 indikerar att inweektodate ()-funktionen jämför det ingående kvartalssegmentet med föregående vecka. Veckosegmentet motsvarar initialt mellan 9 januari och 14 januari. period_no förskjuter sedan både start- och slutgränsen för detta segment till en vecka tidigare, vilket gör att datumgränserna blir 2 januari till 7 januari.
Därför kommer alla transaktioner som sker mellan 2 och 8 januari (exklusive 8 janiari) att returnera det booleska resultatet är TRUE.
Exempel 3 – first_week_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 första exemplet.
Skapandet av ett fält, in_week_to_date, som bestämmer vilka transaktioner som ägde rum under kvartalet fram till den 14 januari 2022.
Skapande av ett ytterligare fält benämnt weekday, med användning av weekday()-funktionen. Detta nya fält skapas för att visa vilken veckodag som motsvarar varje datum.
I det här exemplet har vi använt måndag som den första dagen i veckan.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
week_day
in_week_to_date
Resultattabell
date
week_day
in_week_to_date
2022-01-02 12:22:06
sön
0
2022-01-05 01:02:30
ons
0
2022-01-06 15:36:20
tors
0
2022-01-08 10:58:35
lör
0
2022-01-09 08:53:32
sön
0
2022-01-10 21:13:01
mån
-1
2022-01-11 00:57:13
tis
-1
2022-01-12 09:26:02
ons
-1
2022-01-13 15:05:09
tors
-1
2022-01-14 18:44:57
fre
-1
2022-01-15 06:10:46
lör
0
2022-01-16 06:39:27
sön
0
2022-01-17 10:44:16
mån
0
2022-01-18 18:48:17
tis
0
2022-01-26 04:36:03
ons
0
2022-01-27 08:07:49
tors
0
2022-01-28 12:24:29
fre
0
2022-01-30 11:56:56
sön
0
2022-01-30 14:40:19
sön
0
2022-01-31 05:28:21
mån
0
Genom att använda 0 som first_week_day-argument i inweektodate()-funktionen, ersätter funktionsargumentet systemvariabeln FirstWeekDay och anger måndag som den första dagen i veckan.
Därför kommer alla transaktioner som sker mellan 1o och 14 januari returnera det booleska resultatet TRUE, medan transaktioner med datum utanför dessa gränser kommer att returnera värdet FALSE.
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 avgör om transaktioner har skett i veckan fram till den 14 januari 2022 skapas som ett mått i diagramobjektet.
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 om transaktioner ägde rum under samma vecka fram till den 14 januari skapar du följande åtgärd:
=inweektodate(date,'01/14/2022',0)
För att visa vilken veckodag som motsvarar varje datum skapar du ett ytterligare mått:
=weekday(date)
Resultattabell
date
week_day
in_week_to_date
2022-01-02 12:22:06
sön
0
2022-01-05 01:02:30
ons
0
2022-01-06 15:36:20
tors
0
2022-01-08 10:58:35
lör
0
2022-01-09 08:53:32
sön
-1
2022-01-10 21:13:01
mån
-1
2022-01-11 00:57:13
tis
-1
2022-01-12 09:26:02
ons
-1
2022-01-13 15:05:09
tors
-1
2022-01-14 18:44:57
fre
-1
2022-01-15 06:10:46
lör
0
2022-01-16 06:39:27
sön
0
2022-01-17 10:44:16
mån
0
2022-01-18 18:48:17
tis
0
2022-01-26 04:36:03
ons
0
2022-01-27 08:07:49
tors
0
2022-01-28 12:24:29
fre
0
2022-01-30 11:56:56
sön
0
2022-01-30 14:40:19
sön
0
2022-01-31 05:28:21
mån
0
in_week_to_date-fältet skapas som ett mått i ett diagramobjekt med hjälp av inweektodate()-funktionen. Det första argumentet som anges identifierar vilket fält som utvärderas. Det andra argumentet är ett hårdkodat datum för den 14 januari, vilket är base_date som identifierar vilken vecka som ska segmenteras samt definierar slutgränsen för det segmentet. period_no-värdet 0 är det sista argumentet, vilket betyder att funktionen inte jämför veckorna före eller efter den segmenterade veckan.
Systemvariabeln FirstWeekDay bestämmer att veckor börjar på en söndag och slutar på en lördag. Därför skulle januari delas upp i veckor enligt diagrammet nedan, där datumen mellan 9 och 14 januari ger den giltiga perioden för inweekdodate()-beräkningen:
Alla transaktioner som sker mellan 9 och 14 januari returnerar det booleska resultatet TRUE. Transaktioner före och efter datumen ger det booleska resultatet FALSE.
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 Products.
Information om produkt-ID, tillverkningsdatum och självkostnadspris.
I det här exemplet har man identifierat att utrustningsfel var orsaken till att produkter som tillverkades den 12 januari var defekta. Frågan löstes den 13 januari. Slutanvändaren vill ha ett diagramobjekt som visar, efter vecka, status för vilka produkter som tillverkades som var "defekta" eller "felfria", samt kostnaden för de produkter som tillverkades den veckan.
Funktionen inweektodate() returnerar ett booleskt värde vid utvärdering av tillverkningsdatumen för var och en av produkterna. För de som returnerar ett booleskt värde på TRUE, markerar det produkterna som 'Defective'. För alla produkter som returnerar värdet FALSE, och därför inte tillverkas i veckan fram till och med den 12 januari, markeras produkterna som ‘Faultless’.
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!