# monthend funkcja skryptu i funkcja wykresu

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

Składnia:

MonthEnd(date[, period\_no])

Innymi słowy, funkcja `monthend()` określa, na który miesiąc przypada data. Następnie zwraca znacznik czasu w formacie daty dla ostatniej milisekundy tego miesiąca.

Schemat funkcji `monthend`.

Schemat funkcji `monthend`.

Schemat funkcji `monthend`monthend. ![Diagram pokazujący sposób użycia funkcji monthend do identyfikacji najpóźniejszego znacznika czasu wybranego miesiąca.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-diagram1.png)

Kiedy używać monthend

Funkcja `monthend()` jest powszechnie używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka miesiąca, który jeszcze nie nastąpił. Na przykład, jeśli chcesz obliczyć łączne odsetki, które nie zostały jeszcze naliczone w ciągu miesiąca.

Typ zwracanych danych: wartość podwójna

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

## 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 funkcji

| Przykład | Wynik |
| --- | --- |
| `monthend('02/19/2012')` | Zwraca wartość 02/29/2012 23:59:59. |
| `monthend('02/19/2001', -1)` | Zwraca wartość 01/31/2001 23:59:59. |

## Przykład 1 — Przykład podstawowy

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthend.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 daty, które jest przekazywane w formacie zmiennej systemowej `DateFormat` (`MM/DD/YYYY`).

* Instrukcja ładowania poprzedzającego zawiera:

  * funkcję `monthend()`, która jest ustawiona jako pole `end_of_month`.

  * funkcję `timestamp`, która jest ustawiona jako pole `end_of_month_timestamp`.

Skrypt ładowania

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

Transactions: 
    Load 
    *, 
    monthend(date) as end_of_month, 
    timestamp(monthend(date)) as end_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:

* `id`
* `date`
* `end_of_month`
* `end_of_month_timestamp`

Tabela wynikowa

| id | date | end\_of\_month | end\_of\_month\_timestamp |
| --- | --- | --- | --- |
| 8188 | 1/7/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |
| 8189 | 1/19/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |
| 8190 | 2/5/2022 | 02/28/2022 | 28.02.2022 23:59:59 |
| 8191 | 2/28/2022 | 02/28/2022 | 28.02.2022 23:59:59 |
| 8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8193 | 4/1/2022 | 04/30/2022 | 30.04.2022 23:59:59 |
| 8194 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8195 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8198 | 7/9/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8199 | 7/22/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8200 | 7/23/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8201 | 7/27/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8202 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8203 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8204 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8205 | 9/26/2022 | 30.09.2022 | 30.09.2022 23:59:59 |
| 8206 | 10/14/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8207 | 10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |

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

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

Diagram funkcji `monthend` z wybranym marcem.

Diagram funkcji `monthend` z wybranym marcem.

Diagram funkcji `monthend`monthend z wybranym marcem. ![Diagram pokazujący sposób użycia funkcji monthend do identyfikacji najpóźniejszego znacznika czasu wybranego miesiąca.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example1-diagram.png)

Transakcja 8192 miała miejsce 16 marca. Funkcja `monthend()` zwraca ostatnią milisekundę tego miesiąca, czyli 31 marca o godz 23:59:59 (11:59:59 PM).

## Przykład 2 – period\_no

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

#### Skrypt ładowania i wyniki

Przegląd

Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.

W tym przykładzie zadaniem jest utworzenie pola `previous_month_end` zwracającego znacznik czasu końca miesiąca przed transakcją.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    monthend(date,-1) as previous_month_end, 
    timestamp(monthend(date,-1)) as previous_month_end_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:

* `id`
* `date`
* `previous_month_end`
* `previous_month_end_timestamp`

Tabela wynikowa

| id | date | previous\_month\_end | previous\_month\_end\_timestamp |
| --- | --- | --- | --- |
| 8188 | 1/7/2022 | 12/31/2021 | 31.12.2021 23:59:59 |
| 8189 | 1/19/2022 | 12/31/2021 | 31.12.2021 23:59:59 |
| 8190 | 2/5/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |
| 8191 | 2/28/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |
| 8192 | 3/16/2022 | 02/28/2022 | 28.02.2022 23:59:59 |
| 8193 | 4/1/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8194 | 5/7/2022 | 04/30/2022 | 30.04.2022 23:59:59 |
| 8195 | 5/16/2022 | 04/30/2022 | 30.04.2022 23:59:59 |
| 8196 | 6/15/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8197 | 6/26/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8198 | 7/9/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8199 | 7/22/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8200 | 7/23/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8201 | 7/27/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8202 | 8/2/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8203 | 8/8/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8204 | 8/19/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8205 | 9/26/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8206 | 10/14/2022 | 30.09.2022 | 30.09.2022 23:59:59 |
| 8207 | 10/29/2022 | 30.09.2022 | 30.09.2022 23:59:59 |

Funkcja `monthend()` najpierw identyfikuje miesiąc, w którym miały miejsce transakcje, ponieważ jako argument przesunięcia `period_no` przekazano wartość `-1`. Następnie przesuwa zakres o miesiąc wstecz i identyfikuje ostatnią milisekundę tego miesiąca.

Diagram funkcji `monthend` ze zmienną period\_no.

Diagram funkcji `monthend` ze zmienną period\_no.

Diagram funkcji `monthend`monthend ze zmienną period\_no. ![Diagram pokazujący sposób użycia funkcji monthend ze zmienną period_no do identyfikacji najpóźniejszego znacznika czasu miesiąca poprzedzającego miesiąc ustawiony w funkcji monthend().](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example2-diagram.png)

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

## Przykład 3 – przykład z wykresem

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

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

Przegląd

Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.

W tym przykładzie zbiór danych pozostaje bez zmian i jest ładowany do aplikacji. Zadanie polega na utworzeniu obliczenia zwracającego znacznik czasu końca miesiąca, kiedy wystąpiły transakcje, jako miarę na wykresie 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 te pola jako wymiary:

* `date`

* `id`

Aby obliczyć koniec miesiąca, w którym zawarto transakcję, utwórz następujące miary:

* `=monthend(date)`
* `=timestamp(monthend(date))`

Tabela wynikowa

| id | date | =monthend(date) | =timestamp(monthend(date)) |
| --- | --- | --- | --- |
| 8188 | 10/14/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8189 | 10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8190 | 9/26/2022 | 30.09.2022 | 30.09.2022 23:59:59 |
| 8191 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8192 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8193 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8194 | 7/9/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8195 | 7/22/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8196 | 7/23/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8197 | 7/27/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8198 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8199 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8200 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8201 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8202 | 4/1/2022 | 04/30/2022 | 30.04.2022 23:59:59 |
| 8203 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8204 | 2/5/2022 | 02/28/2022 | 28.02.2022 23:59:59 |
| 8205 | 2/28/2022 | 02/28/2022 | 28.02.2022 23:59:59 |
| 8206 | 1/7/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |
| 8207 | 1/19/2022 | 31.01.2022 | 1/31/2022 11:59:59 PM |

Miarę „`end_of_month`” tworzy się na wykresie, używając funkcji `monthend()` i przekazując pole daty jako jej argument.

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

Diagram funkcji `monthend` ze zmienną period\_no.

Diagram funkcji `monthend` ze zmienną period\_no.

Diagram funkcji `monthend`monthend ze zmienną period\_no. ![](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example3-diagram.png)

Transakcja 8192 miała miejsce 16 marca. Funkcja `monthend()` zwraca ostatnią milisekundę tego miesiąca, czyli 31 marca o godz 23:59:59 (11:59:59 PM).

## Przykład 4 — zastosowanie

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

#### Skrypt ładowania i wyniki

Przegląd

W tym przykładzie zestaw danych jest ładowany do tabeli o nazwie `Employee_Expenses`. Tabela zawiera następujące pola:

* Identyfikatory pracowników

* Imiona i nazwiska pracownika

* Średnie dzienne rozliczenia wydatków każdego pracownika.

Użytkownik końcowy chciałby, aby wykres wyświetlał, według identyfikatora pracownika oraz imienia i nazwiska pracownika, szacowane roszczenia z tytułu wydatków do poniesienia przez pozostałą część miesiąca.

Skrypt ładowania

```
Employee_Expenses: 
Load 
* 
Inline  
[ 
employee_id,employee_name,avg_daily_claim 
182,Mark, $15 
183,Deryck, $12.5  
184,Dexter, $12.5 
185,Sydney,$27 
186,Agatha,$18 
]; 
```

Wyniki

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

* `employee_id`
* `employee_name`

Aby obliczyć narosłe odsetki, należy utworzyć następującą miarę:

`=floor(monthend(today(1),0)-today(1))*avg_daily_claim`

Informacjata miera jest dynamiczna i zwracać różne wyniki do tabeli w zależności od daty załadowania danych.

Ustaw Formatowanie liczb miary na Waluta.

Tabela wynikowa

| employee\_id | employee\_name | =floor(monthend(today(1),0)-today(1))\*avg\_daily\_claim |
| --- | --- | --- |
| 182 | Mark | $30.00 |
| 183 | Deryck | $25.00 |
| 184 | Dexter | $25.00 |
| 185 | Sydney | $54.00 |
| 186 | Agatha | $36.00 |

Funkcja `monthend()` zwraca datę końcową bieżącego miesiąca na podstawie aktualnej daty przekazanej jako jej jedyny argument. Wyrażenie zwraca liczbę dni pozostałych w tym miesiącu przez odjęcie bieżącej daty od daty zakończenia miesiąca.

Wartość ta jest następnie mnożona przez średnie dzienne roszczenie z tytułu wydatków przez każdego pracownika, aby obliczyć szacunkową wartość roszczeń, które każdy pracownik złoży w pozostałej części miesiąca.