# 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: dual

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/sense/November2024/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ć

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

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

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 | 05/01/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 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/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 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 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/sense/November2024/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/sense/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 karty.

Skrypt ładowania zawiera:

* Ten sam zestaw danych i scenariusz 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 | 12/1/2021 12:00:00 AM |
| 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 | 3/1/2022 12:00:00 AM |
| 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 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 9/26/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/29/2022 | 09/01/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/sense/November2024/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/sense/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 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/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 | 05/01/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/sense/November2024/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 — Scenariusz

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

* 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.