# makeweekdate - Skript- und Diagrammfunktion

Diese Funktion gibt ein Datum zurück, das sich aus dem Jahr, der Wochennummer und dem Tag der Woche berechnet.

Syntax:

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

Rückgabe Datentyp: dual

Die Funktion `makeweekdate()` ist sowohl als Skript als auch als Diagrammfunktion verfügbar. Mit der Funktion wird das Datum basierend auf den an die Funktion übergebenen Parametern berechnet.

Argumente

| Argument | Beschreibung |
| --- | --- |
| weekyear | Das Jahr, wie es durch die Funktion `WeekYear()` für das spezifische Datum definiert wird, also das Jahr, zu dem die Wochennummer gehört.<br><br>InformationshinweisDas Wochenjahr kann sich in einigen Fällen vom Kalenderjahr unterscheiden, zum Beispiel, wenn Woche 1 bereits im Dezember des Vorjahres beginnt. |
| week | Die Wochennummer, wie sie durch die Funktion `Week()` für das spezifische Datum definiert wird.<br><br>Wenn keine Wochennummer angegeben ist, wird 1 angenommen. |
| weekday | Der Tag der Woche, wie durch die Funktion `WeekDay()` für das betreffende Datum definiert. 0 ist der erste Tag der Woche, 6 der letzte Tag der Woche.<br><br>Wenn kein Wochentag angegeben ist, wird 0 angenommen.<br><br>Informationshinweis0 bezieht sich immer auf den ersten Tag der Woche und 6 auf den letzten; welcher Wochentag jedoch der Zahl entspricht, wird durch den Parameter first\_week\_day bestimmt. Ist nichts definiert, wird der Wert der Variablen FirstWeekDay verwendet.<br><br>Wenn gestückelte Wochen zusammen mit einer unmöglichen Parameterkombination verwendet werden, kann dies zu einem Ergebnis führen, das nicht zum gewählten Jahr gehört.<br><br>Beispiel:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Gibt „Dec 27 2020“ zurück, da dieser Tag der erste Tag (der Sonntag) der angegebenen Woche ist. „Jan 1 2021“ war ein Freitag. |
| first\_week\_day | Legt den Tag fest, an dem die Woche beginnt. Ist nichts definiert, wird der Wert der Variable FirstWeekDay verwendet.<br><br>Die möglichen Werte für first\_week\_day sind 0 für Montag, 1 für Dienstag, 2 für Mittwoch, 3 für Donnerstag, 4 für Freitag, 5 für Samstag und 6 für Sonntag.<br><br>Weitere Informationen über die Systemvariable finden Sie unter [FirstWeekDay](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Wenn Sie broken\_weeks nicht angeben, wird der Wert der Variablen BrokenWeeks verwendet, um festzulegen, ob die Wochen gestückelt sind oder nicht.<br><br>Weitere Informationen über die Systemvariable finden Sie unter [BrokenWeeks](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm). |
| reference\_day | Wenn Sie reference\_day nicht angeben, wird der Wert der Variablen ReferenceDay verwendet, um festzulegen, welcher Tag im Januar als Referenztag für die Definition von Woche 1 konfiguriert wird.<br><br>Weitere Informationen über die Systemvariable finden Sie unter [ReferenceDay](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm). |

## Verwendung

Die Funktion `makeweekdate()` wird in der Regel im Skript für die Datengenerierung verwendet, um eine Liste von Datumsangaben zu generieren oder um Datumswerte zu konstruieren, wenn Jahr, Woche und Tag der Woche in den Eingabedaten bereitgestellt werden.

Die folgenden Beispiele nehmen an:

```
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
```

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `makeweekdate(2014,6,6)` | gibt 02/09/2014 zurück |
| `makeweekdate(2014,6,1)` | gibt 02/04/2014 zurück |
| `makeweekdate(2014,6)` | gibt 02/03/2014 zurück (Wochentag 0 wird angenommen) |

## Regionaleinstellungen

Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung `SET DateFormat` in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern.

Die standardmäßigen regionalen Einstellungen in Apps basieren auf den regionalen Systemeinstellungen der Computer oder Server, auf denen Qlik Sense installiert ist. Wenn der Qlik Sense-Server, auf den Sie zugreifen, auf Schweden festgelegt ist, verwendet der Dateneditor die schwedischen regionalen Einstellungen für Datums-, Uhrzeit- und Währungsangaben. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Sense angezeigt wird. Qlik Sense wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.

## Beispiel 1 – Tag eingeschlossen

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens `Sales`.

* Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: `year`, `week` und `sales`.

* Ein vorangehender load-Befehl, der verwendet wird, um eine Kennzahl `end_of_week` zu erstellen. Dabei wird die Funktion `makeweekdate()` verwendet, um das Datum für den Freitag dieser Woche im Format MM/TT/JJJJ zurückzugeben.

Um zu beweisen, dass das zurückgegebene Datum ein Freitag ist, ist die Formel `end_of_week` auch in die Funktion `weekday()` eingeschlossen, um den Tag der Woche zu zeigen.

Ladeskript

```
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
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Ergebnistabelle

| transaction\_year | transaction\_week | end\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Fr |
| 2022 | 02 | 01/14/2022 | Fr |
| 2022 | 03 | 01/21/2022 | Fr |
| 2022 | 04 | 01/28/2022 | Fr |
| 2022 | 05 | 02/04/2022 | Fr |
| 2022 | 06 | 02/11/2022 | Fr |
| 2022 | 07 | 02/18/2022 | Fr |

Das Feld `end_of_week` wird im vorangehenden load-Befehl mithilfe der Funktion `makeweekdate()` erstellt. Die Felder `transaction_year` und `transaction_week` werden über die Funktion als die Argumente für Jahr und Woche übergeben. Ein Wert von 4 wird als Argument für Tag verwendet.

Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen `DateFormat` zurückgegeben.

Die Funktion `makeweekdate()` und ihre Argumente sind auch in eine Funktion `weekday()` eingeschlossen, um das Feld `week_day` zurückzugeben. Wie in der Tabelle oben zu sehen ist, zeigt das Feld `week_day`, dass diese Datumswerte tatsächlich an einem Freitag liegen.

## Beispiel 2 – Tag ausgeschlossen

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens Sales

* Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: year, week und sales.

* Eine vorangehende load-Anweisung, die verwendet wird, um eine Kennzahl first\_day\_of\_week zu erstellen; dabei wird die Funktion makeweekdate() verwendet. Damit wird das Datum für den Montag dieser Woche im Format MM/TT/JJJJ zurückgegeben.

Um zu beweisen, dass das zurückgegebene Datum ein Montag ist, ist die Formel first\_day\_of\_week auch in die Funktion weekday() eingeschlossen, um den Tag der Woche zu zeigen.

Ladeskript

```
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
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Ergebnistabelle

| transaction\_year | transaction\_week | first\_day\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/03/2022 | Mo |
| 2022 | 02 | 01/10/2022 | Mo |
| 2022 | 03 | 01/17/2022 | Mo |
| 2022 | 04 | 01/24/2022 | Mo |
| 2022 | 05 | 01/31/2022 | Mo |
| 2022 | 06 | 02/07/2022 | Mo |
| 2022 | 07 | 02/14/2022 | Mo |

Das Feld first\_day\_of\_week wird in der vorangehenden load-Anweisung mithilfe der Funktion makeweekdate() erstellt. Die Parameter transaction\_year und transaction\_week werden als Funktionsargumente übergeben, und der Parameter für Tag wird leer gelassen.

Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen DateFormat zurückgegeben.

Die Funktion makeweekdate() und ihre Argumente sind auch in eine Funktion weekday() eingeschlossen, um das Feld week\_day zurückzugeben. Wie in der Tabelle oben ersichtlich, gibt das Feld week\_day in allen Fällen Montag zurück, da der Parameter in der Funktion makeweekdate() leergelassen wurde. Somit wird standardmäßig 0 (erster Tag der Woche) verwendet, und der erste Tag der Woche ist von der Systemvariablen FirstWeekDay auf Montag festgelegt.

## Beispiel 3 – Diagrammobjektbeispiel

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

#### Ladeskript und Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Datensatz mit wöchentlichen Umsätzen für 2022 in einer Tabelle namens Sales

* Transaktionsdatumswerte, die in drei Feldern bereitgestellt werden: year, week und sales.

In diesem Beispiel wird ein Diagrammobjekt verwendet, um eine Kennzahl zu erstellen, die der Berechnung für end\_of\_week im ersten Beispiel entspricht. Diese Kennzahl verwendet die Funktion makeweekdate(), um das Datum für den Freitag dieser Woche im Format MM/TT/JJJJ zurückzugeben.

Um zu beweisen, dass das zurückgegebene Datum an einem Freitag liegt, wird eine zweite Kennzahl erstellt, um den Tag der Woche zurückzugeben.

Ladeskript

```
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
];
```

Ergebnisse

Gehen Sie folgendermaßen vor:

1. Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

   * transaction\_year

   * transaction\_week

2. Um die Berechnung durchzuführen, die der des Felds end\_of\_week aus dem ersten Beispiel entspricht, erstellen Sie die folgende Kennzahl:

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

3. Um den Tag der Woche für jede Transaktion zu berechnen, erstellen Sie die folgende Kennzahl:

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

Ergebnistabelle

| transaction\_year | transaction\_week | =makeweekdate(transaction\_year,transaction\_week,4) | =weekday(makeweekdate(transaction\_year,transaction\_week,4)) |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Fr |
| 2022 | 02 | 01/14/2022 | Fr |
| 2022 | 03 | 01/21/2022 | Fr |
| 2022 | 04 | 01/28/2022 | Fr |
| 2022 | 05 | 02/04/2022 | Fr |
| 2022 | 06 | 02/11/2022 | Fr |
| 2022 | 07 | 02/18/2022 | Fr |

Ein dem end\_of\_week entsprechendes Feld wird im Diagrammobjekt als Kennzahl erstellt, indem die Funktion makeweekdate() verwendet wird. Die Felder transaction\_year und transaction\_week werden als die Argumente für Jahr und Woche übergeben. Ein Wert von 4 wird als Argument für Tag verwendet.

Die Funktion kombiniert diese Werte dann und konvertiert sie in ein Datumsfeld. Die Ergebnisse werden im Format der Systemvariablen DateFormat zurückgegeben.

Die Funktion makeweekdate() und ihre Argumente sind auch in eine Funktion weekday() eingeschlossen, um eine Berechnung zurückzugeben, die derjenigen für das Feld week\_day im ersten Beispiel entspricht. Wie in der Tabelle oben zu sehen ist, zeigt die letzte Spalte rechts, dass diese Datumswerte tatsächlich auf einen Freitag fallen.

## Beispiel 4 – Szenario

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

#### Ladeskript und Diagrammformel

Übersicht

In diesem Beispiel erstellen Sie eine Liste der Datumswerte, die alle Freitage für das Jahr 2022 umfasst.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Ladeskript

```
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;
```

Ergebnisse

Ergebnistabelle

| date | weekday |
| --- | --- |
| 01/07/2022 | Fr |
| 01/14/2022 | Fr |
| 01/21/2022 | Fr |
| 01/28/2022 | Fr |
| 02/04/2022 | Fr |
| 02/11/2022 | Fr |
| 02/18/2022 | Fr |
| 02/25/2022 | Fr |
| 03/04/2022 | Fr |
| 03/11/2022 | Fr |
| 03/18/2022 | Fr |
| 03/25/2022 | Fr |
| 04/01/2022 | Fr |
| 04/08/2022 | Fr |
| 04/15/2022 | Fr |
| 04/22/2022 | Fr |
| 04/29/2022 | Fr |
| 05/06/2022 | Fr |
| 05/13/2022 | Fr |
| 05/20/2022 | Fr |
| 05/27/2022 | Fr |
| 06/03/2022 | Fr |
| 06/10/2022 | Fr |
| 06/17/2022 | Fr |
| + 27 weitere Zeilen |  |

Die Funktion makeweekdate() findet jeden Freitag im Jahr 2022. Ein Wochenparameter von -2 sorgt dafür, dass keine Datumswerte ausgelassen werden. Abschließend erstellt eine vorangehende load-Anweisung ein weiteres Feld weekday zur Klarstellung, um zu zeigen, dass jeder Wert für date ein Freitag ist.