# 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/cloud-services/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/cloud-services/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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) |

## Kiedy używać makeweekdate

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/YYYY. 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. Więcej informacji można znaleźć w temacie [Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Domyślne ustawienia regionalne w aplikacjach są oparte na profilu użytkownika. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Cloud. Interfejs Qlik Cloud będzie wyświetlany w tym samym języku co używana przeglądarka.

Jeżeli jesteś twórcą aplikacji, możesz wybrać domyślny region dla tworzonych przez siebie aplikacji. Więcej informacji zawiera temat [Ustawianie preferowanych ustawień regionalnych do tworzenia aplikacji i skryptów w Analityka Qlik Cloud](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Przykład 1 – uwzględnienie dnia

[](https://help.qlik.com/en-US/cloud-services/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

| rok\_transakcji | tydzień\_transakcji | koniec\_tygodnia | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Fri |
| 2022 | 02 | 01/14/2022 | Fri |
| 2022 | 03 | 21.01.2022 | Fri |
| 2022 | 04 | 28.01.2022 | Fri |
| 2022 | 05 | 02/04/2022 | Fri |
| 2022 | 06 | 11.02.2022 | Fri |
| 2022 | 07 | 18.02.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/cloud-services/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

| rok\_transakcji | tydzień\_transakcji | pierwszy\_dzień\_tygodnia | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/03/2022 | Pon |
| 2022 | 02 | 01/10/2022 | Pon |
| 2022 | 03 | 17.01.2022 | Pon |
| 2022 | 04 | 01/24/2022 | Pon |
| 2022 | 05 | 31.01.2022 | Pon |
| 2022 | 06 | 02/07/2022 | Pon |
| 2022 | 07 | 02/14/2022 | Pon |

Pole first\_day\_of\_week jest tworzone w poprzedniej instrukcji load 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/cloud-services/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

| rok\_transakcji | tydzień\_transakcji | =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 | 21.01.2022 | Fri |
| 2022 | 04 | 28.01.2022 | Fri |
| 2022 | 05 | 02/04/2022 | Fri |
| 2022 | 06 | 11.02.2022 | Fri |
| 2022 | 07 | 18.02.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/cloud-services/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 | dzień tygodnia |
| --- | --- |
| 01/07/2022 | Fri |
| 01/14/2022 | Fri |
| 21.01.2022 | Fri |
| 28.01.2022 | Fri |
| 02/04/2022 | Fri |
| 11.02.2022 | Fri |
| 18.02.2022 | Fri |
| 02/25/2022 | Fri |
| 03/04/2022 | Fri |
| 03/11/2022 | Fri |
| 18.03.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 |
| 13.05.2022 | Fri |
| 20.05.2022 | Fri |
| 05/27/2022 | Fri |
| 06/03/2022 | Fri |
| 06/10/2022 | Fri |
| 17.06.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.