makeweekdate()-funktionen är tillgänglig både som skript- och diagramfunktionen. Funktionen beräknar datumet baserat på parametrarna som
Argument
Argument
Beskrivning
weekyear
Det årtal som definieras av WeekYear()-funktionen för det specifika datumet, dvs. det årtal som veckonumret tillhör.
Anteckning om informationVeckoåret kan i vissa fall skilja sig från kalenderåret, till exempel om vecka 1 börjar redan i december året innan.
week
Det veckonummer som definieras av Week()-funktionen för det specifika datumet.
Om inget veckonummer anges antas 1.
weekday
Veckodagen enligt definitionen i WeekDay()-funktionen för datumet i fråga. 0 är veckans första dag och 6 är veckans sista dag.
Om ingen veckodag anges antas 0.
Anteckning om informationÄven om 0 alltid är den första veckodagen och 6 alltid den sista, bestäms vilka veckodagar som motsvarar detta av parametern first_week_day. Om utelämnat används värdet för variabeln FirstWeekDay.
Om brutna veckor används tillsammans med en omöjlig kombination av parametrar kan detta leda till ett resultat som inte hör till det valda året.
Exempel:
MakeWeekDate(2021,1,0,6,1)
Returnerar "27 dec 2020" eftersom denna dag är den första dagen (söndagen) i den angivna veckan. Den 1 januari 2021 var en fredag.
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 anger 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.
Se ReferenceDay för mer information om systemvariabeln
Användning
makeweekdate()-funktionen would commonly be used in the script for data generation to generate a list of dates, or to construct dates when the year, week and day-of-week are provided in the input data.
Följande exempel antar:
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Exempel på funktioner
Exempel
Resultat
makeweekdate(2014,6,6)
returnerar 02/09/2014
makeweekdate(2014,6,1)
returnerar 02/04/2014
makeweekdate(2014,6)
returnerar 02/03/2014 (veckodag 0 antas)
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 – dag inkluderad
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller total försäljning per vecka för 2022 i en tabell som heter Sales.
Tillhandahållna transaktionsdatum över tre fält: year, week och sales.
En föregående last som används för att skapa ett mått, end_of_week, med hjälp av makeweekdate()-funktionen för att returnera datumet för fredagen den veckan i formatet MM/DD/YYYY.
För att bewvisa att det returnerade datumet är en fredag är end_of_week-uttrycket också inneslutet i weekday()-funktionen så att veckodagen visas.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
transaction_year
transaction_week
end_of_week
week_day
Resultattabell
transaction_year
transaction_week
end_of_week
week_day
2022
01
01/07/2022
fre
2022
02
01/14/2022
fre
2022
03
01/21/2022
fre
2022
04
01/28/2022
fre
2022
05
02/04/2022
fre
2022
06
02/11/2022
fre
2022
07
02/18/2022
fre
end_of_week-fältet skapas i föregående LOAD-sats med hjälp av funktionen makeweekdate(). transaction_year- och transaction_week-fälten skickas genom funktionen som argument för år resp. vecka. Värdet 4 används för dagargumentet.
Funktionen kombinerar och konverterar sedan de här värdena till ett datumfält och returnerar resultatet i form av systemvariabeln DateFormat.
makeweekdate()-funktionen och dess argument är också omslutna av en weekday()-funktion för att returnera week_day-fältet och kan ses i tabellen ovan. week_day-fältet visar att de här datumen infaller på en fredag.
Exempel 2 – dag exkluderad
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller total försäljning per vecka för 2022 i en tabell som heter Sales.
Tillhandahållna transaktionsdatum över tre fält: year, week och sales.
En föregående laddning, som används för att skapa ett mått first_day_of_week med makeweekdate(). Då returneras datumet för måndagen i den veckan med formatet MM/DD/YYYY.
För att bevisa att det returnerade datumet är en måndag är first_day_of_week-uttrycket också inneslutet i weekday()-funktionen så att veckodagen visas.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
weekday(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
transaction_year
transaction_week
first_day_of_week
week_day
Resultattabell
transaction_year
transaction_week
first_day_of_week
week_day
2022
01
01/03/2022
mån
2022
02
01/10/2022
mån
2022
03
01/17/2022
mån
2022
04
01/24/2022
mån
2022
05
01/31/2022
mån
2022
06
02/07/2022
mån
2022
07
02/14/2022
mån
first_day_of_week-fältet skapas i föregående LOAD-sats med hjälp av funktionen makeweekdate(). Parametrarna transaction_year och transaction_week skickas som funktionsargument, och dagparametern lämnas blank.
Funktionen kombinerar och konverterar sedan de här värdena till ett datumfält och returnerar resultatet i form av systemvariabeln DateFormat.
makeweekdate()-funktionen och dess argument innesluts också i en weekday()-funktion som returnerar week_day-fältet. Som framgår av tabellen ovan returnerar fältet week_daymåndag i alla fall eftersom den parametern lämnades tom i funktionen makeweekdate(), som är standardiserad till 0 (veckans första dag), och veckans första dag anges som måndag av FirstWeekDay-systemvariabeln.
Exampel 3 – Diagramobjektexempel
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller total försäljning per vecka för 2022 i en tabell som heter Sales.
Tillhandahållna transaktionsdatum över tre fält: year, week och sales.
I det här exemplet kommer ett diagramobjekt att användas för att skapa ett mått som motsvarar end_of_week-beräkningen i det första exemplet. Det här måttet kommer att använda makeweekdate()-funktionen för att returnera datumet för fredagen i den veckan med formatet MM/DD/YYYY.
För att bevisa att datumet som returneras är en fredag skapas ytterligare ett mått som returnerar veckodagen.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Resultat
Gör följande:
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
transaction_year
transaction_week
För att utföra beräkningen som motsvarar den i end_of_week-fältet från det första exemplet skapar du följande mått:
Ett fält som motsvarar end_of_week skapas i som ett mått i diagramobjektet med hjälp av makeweekdate()-funktionen. transaction_year- och transaction_week-fälten skickas som argument för år resp. vecka. Värdet 4 används för dagargumentet.
Funktionen kombinerar och konverterar sedan de här värdena till ett datumfält och returnerar resultatet i form av systemvariabeln DateFormat.
makeweekdate()-funktionen och dess argument innesluts också i en weekday()-funktion som returnerar en beräkningsmotsvarighet till den i week_day-fältet i det första exemplet. Som framgår av ovanstående tabell visar den sista kolumnen till höger att de här datumen inträffar på en fredag.
Exempel 4 – Scenario
Översikt
I det här exemplet skapas en lista över datum som innehåller alla fredagar under 2022.
Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.
Laddningsskript
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
Resultat
Resultattabell
date
weekday
01/07/2022
fre
01/14/2022
fre
01/21/2022
fre
01/28/2022
fre
02/04/2022
fre
02/11/2022
fre
02/18/2022
fre
02/25/2022
fre
03/04/2022
fre
03/11/2022
fre
03/18/2022
fre
03/25/2022
fre
04/01/2022
fre
04/08/2022
fre
04/15/2022
fre
04/22/2022
fre
04/29/2022
fre
05/06/2022
fre
05/13/2022
fre
05/20/2022
fre
05/27/2022
fre
06/03/2022
fre
06/10/2022
fre
06/17/2022
fre
+ ytterligare 27 rader
makeweekdate()-funktionen hittar alla fredagar under 2022. Veckoparametern -2 säkerställer att inga datum missas. Slutligen skapar en föregående laddning ett extra weekday-fält för tydlighet, som visar att varje date-värde är en fredag.
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!