# makeweekdate — funkcja skryptu i funkcja wykresu

Ta funkcja zwraca datę obliczoną na podstawie roku, numeru tygodnia i dnia tygodnia.

Składnia:

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

Typ zwracanych danych: wartość podwójna

Funkcja `makeweekdate()` jest dostępna zarówno jako skrypt, jak i funkcja wykresu. Oblicza ona datę na podstawie otrzymanych argumentów.

Argumenty

| Argument | Opis |
| --- | --- |
| weekyear | Rok zdefiniowany przez funkcję `WeekYear()` dla określonej daty, czyli rok, do którego należy numer tygodnia.<br><br>InformacjaTydzień roku może w niektórych przypadkach różnić się od roku kalendarzowego, na przykład jeśli tydzień 1 rozpoczyna się już w grudniu poprzedniego roku. |
| week | Numer tygodnia zdefiniowany przez funkcję `Week()` dla określonej daty.<br><br>Jeśli nie zostanie podany numer tygodnia, przyjmowana jest wartość 1. |
| weekday | Dzień tygodnia zdefiniowany przez funkcję `WeekDay()` dla danej daty. 0 to pierwszy dzień tygodnia, a 6 to ostatni dzień tygodnia.<br><br>Jeśli nie zostanie podany dzień tygodnia, przyjmowana jest wartość 0.<br><br>InformacjaMimo że 0 zawsze oznacza pierwszy dzień tygodnia, a 6 zawsze ostatni, odpowiadające tym wartościom dni tygodnia określa parametr first\_week\_day . Jeśli ten argument zostanie pominięty, wówczas zostanie użyta wartość zmiennej FirstWeekDay.<br><br>Jeśli zostaną użyte podzielone tygodnie wraz z niemożliwą kombinacją parametrów, może to doprowadzić do wyniku, który nie należy do wybranego roku.<br><br>Przykład:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Zwraca „Dec 27 2020”, ponieważ ten dzień jest pierwszym dniem (niedzielą) określonego tygodnia. Jan 1 2021 przypadał w piątek. |
| first\_week\_day | Określa dzień początku tygodnia. Jeśli ten argument zostanie pominięty, wówczas zostanie użyta wartość zmiennej FirstWeekDay.<br><br>Możliwe wartości first\_week\_day to poniedziałek — 0, wtorek — 1, środa — 2, czwartek — 3, piątek — 4, sobota — 5 oraz niedziela — 6.<br><br>Aby uzyskać więcej informacji o zmiennej systemowej, zobacz [FirstWeekDay](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Jeśli wartość broken\_weeks nie zostanie określona, wówczas wartość zmiennej BrokenWeeks jest stosowana w celu zdefiniowania, czy tygodnie są dzielone, czy nie.<br><br>Aby uzyskać więcej informacji o tej zmiennej systemowej, zobacz [BrokenWeeks](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) |
| reference\_day | Jeśli wartość reference\_day nie zostanie określona, wówczas w celu zdefiniowania dnia w styczniu, który zostanie ustawiony jako dzień odniesienia do zdefiniowania tygodnia 1, zostanie użyta wartość zmiennej ReferenceDay.<br><br>Aby uzyskać więcej informacji o tej zmiennej systemowej, zobacz [ReferenceDay](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) |

## Kiedy używać

Funkcja `makeweekdate()` może być używana w skryptach do generowania danych w celu wygenerowania listy dat lub utworzenia daty na podstawie podanych wartości roku, tygodnia i dnia tygodnia.

W poniższych przykładach zakłada się:

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

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `makeweekdate(2014,6,6)` | zwraca wartość 02/09/2014 |
| `makeweekdate(2014,6,1)` | zwraca wartość 02/04/2014 |
| `makeweekdate(2014,6)` | zwraca 02/03/2014 (przyjmuje się dzień tygodnia 0) |

## Ustawienia regionalne

Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. Format daty jest określony w instrukcji `SET DateFormat` w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów.

Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.

## Przykład 1 – uwzględnienie dnia

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie `Sales`.

* Daty transakcji określone przez trzy pola: `year`, `week` i `sales`.

* Ładowanie poprzedzające, użyte do utworzenia miary `end_of_week`, wykorzystuje funkcję `makeweekdate()`, aby zwrócić datę piątku w tym tygodniu w formacie MM/DD/RRRR.

Aby udowodnić, że zwrócona data to piątek, wyrażenie `end_of_week` zostało zapakowane w funkcję `weekday()`, pokazującą dzień tygodnia.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Tabela wynikowa

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

Pole `end_of_week` jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji `makeweekdate()`. Pola `transaction_year` i `transaction_week` są przekazywane przez funkcję jako argumenty określające rok i tydzień. Argumentowi dnia przypisano wartość 4.

Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej `DateFormat`.

Funkcja `makeweekdate()` wraz z argumentami także jest zapakowana w funkcję `weekday()`, która zwraca pole `week_day`. Jak widać w powyższej tabeli, pole `week_day` pokazuje, że te daty rzeczywiście wypadają w piątek.

## Przykład 2 – dzień nieuwzględniony

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie Sales.

* Daty transakcji określone przez trzy pola: year, week i sales.

* Ładowanie poprzedzające, które zostało użyte do utworzenia miary, first\_day\_of\_week, używa funkcji makeweekdate(). Zostanie zwrócona data poniedziałku w tym tygodniu w formacie MM/DD/RRRR.

Aby udowodnić, że zwrócona data wypada w poniedziałek, wyrażenie first\_day\_of\_week zostało zapakowane w funkcję weekday(), pokazującą dzień tygodnia.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Tabela wynikowa

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

Pole first\_day\_of\_week jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji makeweekdate(). Parametry transaction\_year i transaction\_week zostały przekazane jako argumenty funkcji, a parametr dnia pozostawiono pusty.

Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej DateFormat.

Funkcja makeweekdate() wraz z argumentami także została zapakowana w funkcję weekday(), która zwraca pole week\_day. Jak widać w powyższej tabeli, pole week\_day zwraca we wszystkich wypadkach poniedziałek, ponieważ ten parametr pozostał pusty w funkcji makeweekdate(), co domyślnie oznacza 0 (pierwszy dzień tygodnia), a pierwszy dzień tygodnia jest ustawiony na poniedziałek przez zmienną systemową FirstWeekDay.

## Przykład 3 — przykład z obiektem wykresu

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

#### Skrypt ładowania i wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie Sales.

* Daty transakcji określone przez trzy pola: year, week i sales.

W tym przykładzie obiekt wykresu zostanie użyty w celu utworzenia miary równoważnej obliczeniom end\_of\_week z pierwszego przykładu. Miara ta użyje funkcji makeweekdate(), aby zwrócić datę piątku w tym tygodniu w formacie MM/DD/RRRR.

Aby udowodnić, że zwrócona data wypada w piątek, zostaje utworzona druga miara, która zwraca dzień tygodnia.

Skrypt ładowania

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

Wyniki

Wykonaj następujące czynności:

1. Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

   * transaction\_year

   * transaction\_week

2. Aby wykonać obliczenia równoważne tym, które wykonuje pole end\_of\_week w pierwszym przykładzie, utwórz następującą miarę:

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

3. Aby obliczyć dzień tygodnia każdej transakcji, utwórz następującą miarę:

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

Tabela wynikowa

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

Pole równoważne end\_of\_week zostaje utworzone w obiekcie wykresu jako miara przy użyciu funkcji makeweekdate(). Pola transaction\_year i transaction\_week zostały przekazane jako argumenty roku i tygodnia. Argumentowi dnia przypisano wartość 4.

Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej DateFormat.

Funkcja makeweekdate() wraz z argumentami także została zapakowana w funkcję weekday(), która zwraca obliczenia równoważne obliczeniom pola week\_day z pierwszego przykładu. Jak widać w powyższej tabeli, ostatnia kolumna z prawej pokazuje, że te daty rzeczywiście wypadają w piątek.

## Przykład 4 — zastosowanie

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

#### Skrypt ładowania i wyrażenie wykresu

Przegląd

W tym przykładzie utwórz listę dat zawierających wszystkie piątki 2022 roku.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

Skrypt ładowania

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

Wyniki

Tabela wynikowa

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

Funkcja makeweekdate() znajduje wszystkie piątki w 2022 roku. Przypisanie parametrowi tygodnia wartości -2 daje pewność, że żadna data nie zostanie przeoczona. Ładowanie poprzedzające dla jasności tworzy dodatkowe pole weekday, aby pokazać, że każda wartość date jest piątkiem.