# makeweekdate - skript- och diagramfunktion

Funktionen returnerar ett datum som beräknats från året, veckonumret och veckodagen.

Syntax:

MakeWeekDate(weekyear [, week [, weekday [, first\_week\_day [, broken\_weeks [, reference\_day]]]]])

Returnerad datatyp: dual

`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.<br><br>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.<br><br>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.<br><br>Om ingen veckodag anges antas 0.<br><br>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.<br><br>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.<br><br>Exempel:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>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.<br><br>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.<br><br>Se [FirstWeekDay](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) 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.<br><br>Se [BrokenWeeks](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) 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.<br><br>Se [ReferenceDay](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) 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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Laddningsskript och resultat

Ö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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Laddningsskript och resultat

Ö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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Laddningsskript och diagramuttryck

Ö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:

1. Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

   * transaction\_year

   * transaction\_week

2. 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:

   =makeweekdate(transaction\_year,transaction\_week,4)

3. För att beräkna veckostart för den vecka för varje transaktion skapar du följande mått:

   =weekday(makeweekdate(transaction\_year,transaction\_week,4))

Resultattabell

| transaction\_year | transaction\_week | =makeweekdate(transaction\_year,transaction\_week,4) | =weekday(makeweekdate(transaction\_year,transaction\_week,4)) |
| --- | --- | --- | --- |
| 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 |

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Laddningsskript och diagramuttryck

Ö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.