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 variabelnFirstWeekDay.
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. 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 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!