# weekstart funkcja skryptu i funkcja wykresu

Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu pierwszej milisekundy pierwszego dnia tygodnia kalendarzowego zawierającego wartość date. Domyślnym formatem wyjściowym będzie format DateFormat skonfigurowany w skrypcie.

Składnia:

WeekStart(timestamp [, period\_no [, first\_week\_day ]])

Typ zwracanych danych: wartość podwójna

Funkcja `weekstart()` określa, w którym tygodniu wypada data. Następnie zwraca znacznik czasu w formacie daty dla pierwszej milisekundy tego tygodnia. Pierwszy dzień tygodnia jest określany przez zmienną systemową `FirstWeekDay`. Można ją jednak zastąpić argumentem `first_week_day` funkcji `weekstart()`.

Argumenty

| Argument | Opis |
| --- | --- |
| timestamp | Data lub znacznik czasu do oszacowania. |
| period\_no | shift jest liczbą całkowitą, gdzie 0 oznacza tydzień, który zawiera datę date. Wartości ujemne parametru shift oznaczają poprzednie tygodnie, a wartości dodatnie — tygodnie następne. |
| 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). |

## Kiedy używać weekstart

Funkcja `weekstart()` jest zwykle używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka tygodnia, który upłynął do tej pory. Za jej pomocą można na przykład obliczyć łączną kwotę zarobioną przez pracowników do tej pory w ciągu tygodnia.

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

```
SET FirstWeekDay=0;
```

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `weekstart('01/12/2013')` | Zwraca wartość 01/07/2013. |
| `weekstart('01/12/2013', -1 )` | Zwraca wartość 11/31/2012. |
| `weekstart('01/12/2013', 0, 1)` | Zwraca wartość 01/08/2013. |

## 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łady:

Jeśli chcesz używać ustawień ISO dla tygodni i numerów tygodni, w skrypcie muszą się znajdować następujące elementy:

```
Set DateFormat   ='YYYY-MM-DD'; 
Set FirstWeekDay =0;    // Monday as first week day
Set BrokenWeeks  =0;    //(use unbroken weeks)
Set ReferenceDay =4;    // Jan 4th is always in week 1
```

Jeśli chcesz używać ustawień amerykańskich, w skrypcie muszą się znajdować następujące elementy:

```
Set DateFormat   ='M/D/YYYY';
Set FirstWeekDay =6;    // Sunday as first week day
Set BrokenWeeks  =1;    //(use broken weeks)
Set ReferenceDay =1;    // Jan 1st is always in week 1
```

Powyższe przykłady dają następujące wyniki z funkcji weekstart():

Przykład funkcji Weekstart

| Data | Początek tygodnia według ISO | Początek tygodnia w USA |
| --- | --- | --- |
| Sat 2020 Dec 26 | 2020-12-21 | 12/20/2020 |
| Sun 2020 Dec 27 | 2020-12-21 | 12/27/2020 |
| Mon 2020 Dec 28 | 2020-12-28 | 12/27/2020 |
| Tue 2020 Dec 29 | 2020-12-28 | 12/27/2020 |
| Wed 2020 Dec 30 | 2020-12-28 | 12/27/2020 |
| Thu 2020 Dec 31 | 2020-12-28 | 12/27/2020 |
| Fri 2021 Jan 1 | 2020-12-28 | 12/27/2020 |
| Sat 2021 Jan 2 | 2020-12-28 | 12/27/2020 |
| Sun 2021 Jan 3 | 2020-12-28 | 1/3/2021 |
| Mon 2021 Jan 4 | 2021-01-04 | 1/3/2021 |
| Tue 2021 Jan 5 | 2021-01-04 | 1/3/2021 |

InformacjaPoczątki tygodnia przypadają w poniedziałki w kolumnie ISO, a w sobotę w kolumnie US.

## Przykład 1 — bez dodatkowych argumentów

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.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 zestaw transakcji za rok 2022, który jest ładowany do tabeli o nazwie „Transactions”.

* Pole danych w formacie DateFormat zmiennej systemowej (MM/DD/RRRR).

* Utworzenie pola start\_of\_week zwracającego znacznik czasu początku tygodnia, w którym miały miejsce transakcje.

Skrypt ładowania

```
SET FirstWeekDay=6;

Transactions:
    Load
        *,
        weekstart(date) as start_of_week,
        timestamp(weekstart(date)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Wyniki

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

* date

* start\_of\_week

* start\_of\_week\_timestamp

Tabela wynikowa

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 01.05.2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

Pole „start\_of\_week” jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji weekstart() i przekazanie pola daty jako jej argumentu.

Funkcja weekstart() najpierw identyfikuje, w którym tygodniu przypada wartość daty, i zwraca znacznik czasu pierwszej milisekundy danego tygodnia.

Diagram funkcji weekstart(), przykład bez dodatkowych argumentów

Diagram funkcji weekstart(), przykład bez dodatkowych argumentów

Diagram funkcji weekstart()weekstart(), przykład bez dodatkowych argumentów ![Diagram pokazujący, jak funkcja weekstart konwertuje datę transakcji na znacznik czasu pierwszej milisekundy tygodnia, w którym dana transakcja miała miejsce.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-no-add-arg.png)

Transakcja 8191 miała miejsce 5 lutego. Zmienna systemowa FirstWeekDay ustawia pierwszy dzień tygodnia na niedzielę. Funkcja weekstart() oblicza, że pierwsza niedziela przed 5 lutego – a więc początkiem tygodnia – wypadała 30 stycznia. W związku z tym wartość start\_of\_week dla tej transakcji zwraca pierwszą milisekundę tego dnia – 30 stycznia, godz. 00:00:00.

## Przykład 2 – period\_no

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

#### Skrypt ładowania i wyniki

Przegląd

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

Skrypt ładowania zawiera:

* Ten sam zestaw danych i zastosowanie co w pierwszym przykładzie.

* Utworzenie pola previous\_week\_start zwracającego znacznik czasu początku kwartału, przed tym, w którym miała miejsce transakcja.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        weekstart(date,-1) as previous_week_start,
        timestamp(weekstart(date,-1)) as previous_week_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Wyniki

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

* date

* previous\_week\_start

* previous\_week\_start\_timestamp

Tabela wynikowa

| date | previous\_week\_start | previous\_week\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/26/2021 | 12/26/2021 12:00:00 AM |
| 1/19/2022 | 01/09/2022 | 1/9/2022 12:00:00 AM |
| 2/5/2022 | 01/23/2022 | 1/23/2022 12:00:00 AM |
| 2/28/2022 | 02/20/2022 | 2/20/2022 12:00:00 AM |
| 3/16/2022 | 03/06/2022 | 3/6/2022 12:00:00 AM |
| 4/1/2022 | 03/20/2022 | 3/20/2022 12:00:00 AM |
| 5/7/2022 | 04/24/2022 | 4/24/2022 12:00:00 AM |
| 5/16/2022 | 05/08/2022 | 5/8/2022 12:00:00 AM |
| 6/15/2022 | 06/05/2022 | 6/5/2022 12:00:00 AM |
| 6/26/2022 | 06/19/2022 | 6/19/2022 12:00:00 AM |
| 7/9/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/22/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/23/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/27/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 8/2/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/8/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/19/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 9/26/2022 | 09/18/2022 | 9/18/2022 12:00:00 AM |
| 10/14/2022 | 10/02/2022 | 10/2/2022 12:00:00 AM |
| 10/29/2022 | 10/16/2022 | 10/16/2022 12:00:00 AM |

W tym przypadku, ponieważ wartości period\_no -1 użyto jako argumentu przesunięcia w funkcji weekstart(), funkcja najpierw identyfikuje tydzień, w którym odbywają się transakcje. Następnie identyfikuje pierwszą milisekundę poprzedniego tygodnia.

Diagram funkcji weekstart(), przykład z argumentem period\_no

Diagram funkcji weekstart(), przykład z argumentem period\_no

Diagram funkcji weekstart()weekstart(), przykład z argumentem period\_no ![Diagram pokazujący, jak funkcja weekstart konwertuje datę transakcji na znacznik czasu pierwszej milisekundy tygodnia, w którym dana transakcja miała miejsce.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-period-no.png)

Transakcja 8196 miała miejsce 15 czerwca. Funkcja weekstart() oblicza, że tydzień zaczyna się 12 czerwca. W efekcie poprzedni tydzień rozpoczynał się 5 czerwca o godzinie 00:00:00. Ta wartość jest zwracana dla pola previous\_week\_start.

## Przykład 3 — first\_week\_day

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

#### Skrypt ładowania i wyniki

Przegląd

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

Skrypt ładowania zawiera ten sam zestaw danych i scenariusz co w pierwszym przykładzie. Jednak w tym przykładzie musimy ustawić wtorek jako pierwszy dzień tygodnia roboczego.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        weekstart(date,0,1) as start_of_week,
        timestamp(weekstart(date,0,1)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Wyniki

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

* date

* start\_of\_week

* start\_of\_week\_timestamp

Tabela wynikowa

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/04/2022 | 1/4/2022 12:00:00 AM |
| 1/19/2022 | 01/18/2022 | 1/18/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/22/2022 | 2/22/2022 12:00:00 AM |
| 3/16/2022 | 03/15/2022 | 3/15/2022 12:00:00 AM |
| 4/1/2022 | 03/29/2022 | 3/29/2022 12:00:00 AM |
| 5/7/2022 | 05/03/2022 | 5/3/2022 12:00:00 AM |
| 5/16/2022 | 05/10/2022 | 5/1/2022 12:00:00 AM |
| 6/15/2022 | 06/14/2022 | 6/14/2022 12:00:00 AM |
| 6/26/2022 | 06/21/2022 | 6/1/2022 12:00:00 AM |
| 7/9/2022 | 07/05/2022 | 7/5/2022 12:00:00 AM |
| 7/22/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/23/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/27/2022 | 07/26/2022 | 7/26/2022 12:00:00 AM |
| 8/2/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/8/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/19/2022 | 08/16/2022 | 8/16/2022 12:00:00 AM |
| 9/26/2022 | 09/20/2022 | 9/20/2022 12:00:00 AM |
| 10/14/2022 | 10/11/2022 | 10/11/2022 12:00:00 AM |
| 10/29/2022 | 10/25/2022 | 10/25/2022 12:00:00 AM |

W tym przypadku, ponieważ funkcji weekstart() przekazano wartość 1 jako argument first\_week\_date, funkcja ta ustawia wtorek jako pierwszy dzień tygodnia.

Diagram funkcji weekstart(), przykład z argumentem first\_week\_day

Diagram funkcji weekstart(), przykład z argumentem first\_week\_day

Diagram funkcji weekstart()weekstart(), przykład z argumentem first\_week\_day ![Diagram pokazujący, jak funkcja weekstart konwertuje datę transakcji na znacznik czasu pierwszej milisekundy tygodnia, w którym dana transakcja miała miejsce.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-first-week-day.png)

Transakcja 8191 miała miejsce 5 lutego. Funkcja weekstart() oblicza, że pierwszy wtorek przed tą datą – a zatem początek tygodnia i zwracana wartość – przypadł na 1 lutego o godz. 00:00:00.

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

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

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

Przegląd

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

Skrypt ładowania zawiera ten sam zestaw danych i scenariusz co w pierwszym przykładzie.

Jednak w tym przykładzie do aplikacji został załadowany niezmieniony zbiór danych. Obliczenia zwracające znacznik czasu początku tygodnia, w którym wystąpiły transakcje, są tworzone jako miara w obiekcie wykresu aplikacji.

Skrypt ładowania

```
Transactions:

Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: date.

Aby obliczyć początek tygodnia, w którym ma miejsce transakcja, dodaj następujące miary:

* =weekstart(date)

* =timestamp(weekstart(date))

Tabela wynikowa

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 01.05.2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

Miarę „start\_of\_week” tworzy się w obiekcie wykresu, używając funkcji weekstart() i przekazując pole daty date jako jej argument.

Funkcja weekstart() najpierw identyfikuje, w którym tygodniu przypada wartość daty, i zwraca znacznik czasu pierwszej milisekundy danego tygodnia.

Diagram funkcji weekstart(), przykład obiektu wykresu

Diagram funkcji weekstart(), przykład obiektu wykresu

Diagram funkcji weekstart()weekstart(), przykład obiektu wykresu ![Diagram pokazujący, jak funkcja weekstart konwertuje datę transakcji na znacznik czasu pierwszej milisekundy tygodnia, w którym dana transakcja miała miejsce.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-chart-object.png)

Transakcja 8191 miała miejsce 5 lutego. Zmienna systemowa FirstWeekDay ustawia pierwszy dzień tygodnia na niedzielę. Funkcja weekstart() oblicza, że pierwsza niedziela przed 5 lutego – a więc początek tygodnia – wypadała 30 stycznia. W związku z tym wartość start\_of\_week dla tamtej transakcji zwraca pierwszą milisekundę tamtego dnia, czyli 30 stycznia, godz. 00:00:00.

## Przykład 5 — zastosowanie

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.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 załadowany do tabeli o nazwie Payroll.

* Dane zawierające identyfikatory pracowników, imiona i nazwiska pracowników oraz dzienne zarobki każdego pracownika.

Pracownik zaczyna pracę w poniedziałek i pracuje sześć dni w tygodniu. Zmienna systemowa FirstWeekDay nie może być modyfikowana.

Użytkownik końcowy potrzebuje obiektu wykresu, który pokazuje zarobki do określonego dnia tygodnia według identyfikatora oraz imienia i nazwiska pracownika.

Skrypt ładowania

```
Payroll: 
Load
*
Inline 
[
employee_id,employee_name,day_rate
182,Mark, $150
183,Deryck, $125
184,Dexter, $125
185,Sydney,$270
186,Agatha,$128
];
```

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:

   * employee\_id

   * employee\_name

2. Następnie utwórz miarę obliczającą zarobki do określonego dnia tygodnia:

   =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6)

3. Ustaw Formatowanie liczb miary na Waluta.

Tabela wynikowa

| employee\_id | employee\_name | =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6) |
| --- | --- | --- |
| 182 | Mark | $600.00 |
| 183 | Deryck | $500.00 |
| 184 | Dexter | $500.00 |
| 185 | Sydney | $1080.00 |
| 186 | Agatha | $512.00 |

Funkcja weekstart(), przyjmująca bieżącą datę jako pierwszy argument i 0 jako trzeci argument, ustawia poniedziałek jako pierwszy dzień tygodnia i zwraca datę początku bieżącego tygodnia. Odejmując ten wynik od bieżącej daty, wyrażenie zwraca liczbę dni, które upłynęły do tej pory w tym tygodniu.

Następnie warunek sprawdza, czy w tym tygodniu było więcej niż sześć dni. Jeśli tak, wartość day\_rate pracownika zostaje pomnożona przez 6 dni. W przeciwnym razie wartość day\_rate zostaje pomnożona przez liczbę dni, jakie upłynęły do tej pory w tym tygodniu.