# monthstart funkcja skryptu i funkcja wykresu

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

Składnia:

MonthStart(date[, period\_no])

Typ zwracanych danych: wartość podwójna

Schemat funkcji `monthstart()`

Schemat funkcji `monthstart()`

Schemat funkcji `monthstart()`monthstart() ![Przykładowy diagram pokazujący, jak wszystkie elementy funkcji wspólnie pozwalają uzyskać wynik.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-general.png)

Funkcja `monthstart()` określa, w którym miesiącu wypada data. Następnie zwraca znacznik czasu w formacie daty dla pierwszej milisekundy tego miesiąca.

Argumenty

| Argument | Opis |
| --- | --- |
| date | Data lub znacznik czasu do oszacowania. |
| period\_no | period\_no jest liczbą całkowitą, która, jeśli ma wartość 0 lub jest pominięta, oznacza miesiąc, który zawiera date. Wartości ujemne parametru period\_no oznaczają miesiące poprzednie, a wartości dodatnie — miesiące następne. |

## Kiedy używać monthstart

Funkcja `monthstart()` jest zwykle używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka miesiąca, który upłynął do tej pory. Przy jej użyciu można na przykład obliczyć odsetki narosłe w ciągu miesiąca do określonej daty.

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `monthstart('10/19/2001')` | Zwraca wartość 10/01/2001. |
| `monthstart('10/19/2001', -1)` | Zwraca wartość 09/01/2001. |

## 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 — bez dodatkowych argumentów

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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_month`, zwracającego znacznik czasu początku miesiąca, w którym zostały zawarte transakcje.

Skrypt ładowania

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

Transactions:
    Load
        *,
        monthstart(date) as start_of_month,
        timestamp(monthstart(date)) as start_of_month_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_month`

* `start_of_month_timestamp`

Tabela wynikowa

| date | start\_of\_month | start\_of\_month\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/7/2022 | 01.05.2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 07/01/2022 | 6/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 1.07.2022 | 1.07.2022 00:00:00 |
| 7/23/2022 | 01.07.2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 1.07.2022 00:00:00 |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 1.08.2022 00:00:00 |
| 8/19/2022 | 01.08.2022 | 1.08.2022 00:00:00 |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |

Pole „`start_of_month`” jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji `monthstart()` i przekazanie pola daty jako jej argumentu.

Funkcja `monthstart()` identyfikuje, w którym miesiącu przypada wartość daty, i zwraca znacznik czasu pierwszej milisekundy danego miesiąca.

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

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

Diagram funkcji `monthstart()`monthstart(), przykład bez dodatkowych argumentów ![Diagram przedstawiający wyniki wykorzystania funkcji monthstart do określenia miesiąca, w którym miała miejsce transakcja.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-no-add-arg.png)

Transakcja 8192 miała miejsce 16 marca. Funkcja `monthstart()` zwraca pierwszą milisekundę tego miesiąca, czyli 1 marca o godz 00:00:00.

## Przykład 2 – period\_no

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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_month_start`, zwracającego znacznik czasu początku miesiąca, przed którym została zawarta transakcja.

Skrypt ładowania

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

Transactions:
    Load
        *,
        monthstart(date,-1) as previous_month_start,
        timestamp(monthstart(date,-1)) as previous_month_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_month_start`

* `previous_month_start_timestamp`

Tabela wynikowa

| date | previous\_month\_start | previous\_month\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 1/19/2022 | 12/01/2021 | 01.12.2021 00:00:00 |
| 2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 3/16/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 4/1/2022 | 03/01/2022 | 01.03.2022 00:00:00 |
| 5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 6/15/2022 | 01.05.2022 | 01.05.2022 00:00:00 |
| 6/26/2022 | 01.05.2022 | 01.05.2022 00:00:00 |
| 7/9/2022 | 06/01/2022 | 1.06.2022 00:00:00 |
| 7/22/2022 | 06/01/2022 | 1.06.2022 00:00:00 |
| 7/23/2022 | 06/01/2022 | 1.06.2022 00:00:00 |
| 7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/2/2022 | 1.07.2022 | 1.07.2022 00:00:00 |
| 8/8/2022 | 01.07.2022 | 1.07.2022 00:00:00 |
| 8/19/2022 | 1.07.2022 | 1.07.2022 00:00:00 |
| 9/26/2022 | 01.08.2022 | 8/1/2022 12:00:00 AM |
| 10/14/2022 | 09/01/2022 | 01.09.2022 00:00:00 |
| 10/29/2022 | 01.09.2022 | 9/1/2022 12:00:00 AM |

W tym przypadku, ponieważ wartości `period_no` -1 użyto jako argumentu przesunięcia w funkcji `monthstart()`, funkcja najpierw identyfikuje miesiąc, w którym odbywają się transakcje. Następnie przesuwa zakres o miesiąc wstecz i identyfikuje pierwszą milisekundę tego miesiąca.

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

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

Diagram funkcji `monthstart()`monthstart(), przykład z argumentem period\_no ![Diagram przedstawiający wyniki wykorzystania funkcji monthstart do określenia miesiąca, w którym miała miejsce transakcja.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-period-no.png)

Transakcja 8192 miała miejsce 16 marca. Funkcja `monthstart()` stwierdza, że miesiąc poprzedzający miesiąc transakcji to luty. Następnie zwraca pierwszą milisekundę tego miesiąca — 1 lutego o godz. 00:00:00.

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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. Obliczenie zwracające znacznik czasu początku miesiąca, kiedy wystąpiły transakcje, jest tworzone jako miara w obiekcie wykresu aplikacji.

Skrypt ładowania

```

SET DateFormat='MM/DD/YYYY';
 
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 miesiąca, w którym zawarto transakcję, utwórz następujące miary:

* `=monthstart(date)`

* `=timestamp(monthstart(date))`

Tabela wynikowa

| date | =monthstart(date) | =timestamp(monthstart(date)) |
| --- | --- | --- |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 1.08.2022 00:00:00 |
| 8/19/2022 | 01.08.2022 | 8/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 1.07.2022 | 1.07.2022 00:00:00 |
| 7/23/2022 | 01.07.2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 5/7/2022 | 01.05.2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |

Miarę „`start_of_month`” tworzy się w obiekcie wykresu, używając funkcji `monthstart()` i przekazując pole daty jako jej argument.

Funkcja `monthstart()` identyfikuje, w którym miesiącu przypada wartość daty, i zwraca znacznik czasu pierwszej milisekundy danego miesiąca.

Diagram funkcji `monthstart()`, przykład obiektu wykresu

Diagram funkcji `monthstart()`, przykład obiektu wykresu

Diagram funkcji `monthstart()`monthstart(), przykład obiektu wykresu ![Diagram przedstawiający wyniki wykorzystania funkcji monthstart do określenia miesiąca, w którym miała miejsce transakcja.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-chart-object.png)

Transakcja 8192 miała miejsce 16 marca. Funkcja `monthstart()` stwierdza, że pierwsza transakcja miała miejsce w marcu i zwraca pierwszą milisekundę tego miesiąca, czyli 1 marca o godz 00:00:00.

## Przykład 4 — zastosowanie

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthstart.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 zestaw sald kredytów, który jest ładowany do tabeli o nazwie Loans.

* Dane zawierające identyfikatory kredytów, saldo na początku miesiąca i prostą stopę procentową naliczaną od każdego kredytu rocznie.

Użytkownik końcowy chciałby, aby obiekt wykresu wyświetlał według identyfikatora pożyczki bieżące odsetki naliczone od każdej pożyczki w bieżącym miesiącu.

Skrypt ładowania

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

Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

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:

   * loan\_id

   * start\_balance

2. Następnie utwórz miarę, aby obliczyć narosłe odsetki:

   =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365)

3. Ustaw Formatowanie liczb miary na Waluta.

Tabela wynikowa

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $16.44 |
| 8189 | $15000.00 | $58.56 |
| 8190 | $17500.00 | $28.77 |
| 8191 | $21000.00 | $48.90 |
| 8192 | $90000.00 | $517.81 |

Używając dzisiejszej daty jako jedynego argumentu, funkcja monthstart() zwraca datę początkową bieżącego miesiąca. Odejmując ten wynik od bieżącej daty, wyrażenie zwraca liczbę dni, które upłynęły do tej pory w tym miesiącu.

Wartość ta jest następnie mnożona przez stopę procentową i dzielona przez 365, aby uzyskać wysokość odsetek nagromadzonych do tego momentu tygodnia. Wynik jest następnie mnożony przez saldo początkowe pożyczki, aby zwrócić odsetki naliczone do tej pory w tym miesiącu.