Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu ostatniej milisekundy okresu miesiąca, dwóch miesięcy, kwartału, czterech miesięcy lub półrocza, który zawiera datę bazową. Można także wyszukać znacznik czasu końca okresu poprzedniego lub następnego. Domyślnym formatem wyjściowym będzie format DateFormat skonfigurowany w skrypcie.
Liczba miesięcy określająca okres. Wartość całkowita lub wyrażenie, którego wynikiem jest jedna z następujących wartości całkowitych: 1 (równoważnik funkcji inmonth()), 2 (dwa miesiące), 3 (równoważnik funkcji inquarter()), 4 (cztery miesiące) lub 6 (pół roku).
date
Data lub znacznik czasu do oszacowania.
period_no
Okres może być przesunięty o wartość period_no — liczbę całkowitą lub wyrażenie, którego wynikiem jest liczba całkowita, gdzie wartość 0 wskazuje dzień zawierający wartość base_date. Wartości ujemne parametru period_no oznaczają okresy poprzednie, a wartości dodatnie — okresy następne.
first_month_of_year
Jeśli użytkownik zamierza korzystać z lat (obrotowych), które nie zaczynają się w styczniu, powinien wskazać wartość od 2 do 12 jako parametr first_month_of_year.
Funkcja monthsend() dzieli rok na segmenty na podstawie przekazanego argumentu n_months. Następnie sprawdza, do którego segmentu należy każda z przekazanych dat, i zwraca ostatnią milisekundę, w formacie daty, tego segmentu. Funkcja może zwrócić końcowy znacznik czasu z poprzednich lub następnych segmentów, jak również może przedefiniować pierwszy miesiąc roku.
Następujące segmenty roku są dostępne w funkcji jako argumenty n_month:
Argumenty funkcji n_month
Okres
Liczba miesięcy
miesiąc
1
dwa miesiące
2
kwartał
3
cztery miesiące
4
pół roku
6
Kiedy używać
Funkcja monthsend() jest zwykle jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka miesiąca, który upłynął do tej pory. Użytkownik może, przy użyciu zmiennej, wybrać dowolny okres. Na przykład, funkcja monthsend() może dostarczyć zmienną wejściową umożliwiającą użytkownikowi obliczenie sumy odsetek jeszcze nie zapłaconych w miesiącu, kwartale lub półroczu.
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łady funkcji
Przykład
Wynik
monthsend(4, '07/19/2013')
Zwraca wartość 08/31/2013.
monthsend(4, '10/19/2013', -1)
Zwraca wartość 08/31/2013.
monthsend(4, '10/19/2013', 0, 2)
Zwraca wartość 01/31/2014. Ponieważ początkiem roku staje się miesiąc 2.
Przykład 1 — Przykład podstawowy
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 daty przekazane w formacie DateFormat zmiennej systemowej (MM/DD/YYYY).
Instrukcja ładowania poprzedzającego zawiera:
funkcję monthsend, która jest ustawiona jako pole bi_monthly_end. Grupuje transakcje w dwumiesięczne segmenty.
Funkcja timestamp, która zwraca początkowy znacznik czasu segmentu dla każdej transakcji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
bi_monthly_end
bi_monthly_end_timestamp
Tabela wynikowa
id
date
bi_monthly_end
bi_monthly_end_timestamp
8188
1/7/2022
02/28/2022
2/28/2022 11:59:59 PM
8189
1/19/2022
02/28/2022
2/28/2022 11:59:59 PM
8190
2/5/2022
02/28/2022
2/28/2022 11:59:59 PM
8191
2/28/2022
02/28/2022
2/28/2022 11:59:59 PM
8192
3/16/2022
04/30/2022
4/30/2022 11:59:59 PM
8193
4/1/2022
04/30/2022
4/30/2022 11:59:59 PM
8194
5/7/2022
06/30/2022
6/30/2022 11:59:59 PM
8195
5/22/2022
06/30/2022
6/30/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
08/31/2022
8/31/2022 11:59:59 PM
8199
7/22/2022
08/31/2022
8/31/2022 11:59:59 PM
8200
7/23/2022
08/31/2022
8/31/2022 11:59:59 PM
8201
7/27/2022
08/31/2022
8/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
10/31/2022
10/31/2022 11:59:59 PM
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 bi_monthly_end jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji monthsend(). Pierwszy podany argument – 2 – dzieli rok na segmenty dwumiesięczne. Pierwszy podany argument określa, które pole jest oceniane.
Transakcja 8195 ma miejsce 22 maja. Funkcja monthsend() początkowo dzieli rok na segmenty dwumiesięczne. Transakcja 8195 należy do segmentu od 1 maja do 30 czerwca. W wyniku funkcja zwraca ostatnią milisekundę tego segmentu – 30.06.2022, godz. 23:59:59.
Przykład 2 – period_no
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
W tym przykładzie zadaniem jest utworzenie pola prev_bi_monthly_end zwracającego pierwszą milisekundę dwumiesięcznego segmentu przed zawarciem transakcji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
prev_bi_monthly_end
prev_bi_monthly_end_timestamp
Tabela wynikowa
id
date
prev_bi_monthly_end
prev_bi_monthly_end_timestamp
8188
1/7/2022
12/31/2021
12/31/2021 11:59:59 PM
8189
1/19/2022
12/31/2021
12/31/2021 11:59:59 PM
8190
2/5/2022
12/31/2021
12/31/2021 11:59:59 PM
8191
2/28/2022
12/31/2021
12/31/2021 11:59:59 PM
8192
3/16/2022
02/28/2022
2/28/2022 11:59:59 PM
8193
4/1/2022
02/28/2022
2/28/2022 11:59:59 PM
8194
5/7/2022
04/30/2022
4/30/2022 11:59:59 PM
8195
5/22/2022
04/30/2022
4/30/2022 11:59:59 PM
8196
6/15/2022
04/30/2022
4/30/2022 11:59:59 PM
8197
6/26/2022
04/30/2022
4/30/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
06/30/2022
6/30/2022 11:59:59 PM
8203
8/8/2022
06/30/2022
6/30/2022 11:59:59 PM
8204
8/19/2022
06/30/2022
6/30/2022 11:59:59 PM
8205
9/26/2022
08/31/2022
8/31/2022 11:59:59 PM
8206
10/14/2022
08/31/2022
8/31/2022 11:59:59 PM
8207
10/29/2022
08/31/2022
8/31/2022 11:59:59 PM
Jeśli po podzieleniu roku na segmenty dwumiesięczne do funkcji monthsend() przekażemy wartość -1 jako argument period_no, funkcja ta zwróci ostatnią milisekundę dwumiesięcznego segmentu poprzedzającego ten, w którym zawarto transakcję.
Transakcja 8195 należy do segmentu od maja do czerwca. W efekcie poprzedni dwumiesięczny segment obejmował okres od 1 marca do 30 kwietnia, więc funkcja zwraca ostatnią milisekundę właśnie tego segmentu, czyli odpowiadającą dacie 30.04.2022, godz. 23:59:59.
Przykład 3 — first_month_of_year
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
W tym przykładzie przyjęto, że kwiecień ma być pierwszym miesiącem roku podatkowego.
Utwórz pole bi_monthly_end, które grupuje transakcje w segmenty dwumiesięczne i zwraca znacznik czasu ostatniej milisekundy segmentu dla każdej transakcji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
bi_monthly_end
bi_monthly_end_timestamp
Tabela wynikowa
id
date
bi_monthly_end
bi_monthly_end_timestamp
8188
1/7/2022
01/31/2022
1/31/2022 11:59:59 PM
8189
1/19/2022
01/31/2022
1/31/2022 11:59:59 PM
8190
2/5/2022
03/31/2022
3/31/2022 11:59:59 PM
8191
2/28/2022
03/31/2022
3/31/2022 11:59:59 PM
8192
3/16/2022
03/31/2022
3/31/2022 11:59:59 PM
8193
4/1/2022
05/31/2022
5/31/2022 11:59:59 PM
8194
5/7/2022
05/31/2022
5/31/2022 11:59:59 PM
8195
5/22/2022
05/31/2022
5/31/2022 11:59:59 PM
8196
6/15/2022
07/31/2022
7/31/2022 11:59:59 PM
8197
6/26/2022
07/31/2022
7/31/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
09/30/2022
9/30/2022 11:59:59 PM
8203
8/8/2022
09/30/2022
9/30/2022 11:59:59 PM
8204
8/19/2022
09/30/2022
9/30/2022 11:59:59 PM
8205
9/26/2022
09/30/2022
9/30/2022 11:59:59 PM
8206
10/14/2022
11/30/2022
11/30/2022 11:59:59 PM
8207
10/29/2022
11/30/2022
11/30/2022 11:59:59 PM
Kiedy jako argument first_month_of_year funkcji monthsend() zostaje przekazana wartość 4, funkcja ta rozpoczyna rok 1 kwietnia, a następnie dzieli go na segmenty dwumiesięczne: kwi-maj, cze-lip, sie-wrz, paź-lis, gru-sty, lut-mar.
Transakcja 8195 miała miejsce 22 maja i należy do segmentu od 1 kwietnia do 31 maja. W wyniku funkcja zwraca ostatnią milisekundę tego segmentu – 31.05.2022, godz. 23:59:59.
Przykład 4 — przykład z obiektem wykresu
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie. Jednak w tym przykładzie zestaw danych pozostaje bez zmian i jest ładowany do aplikacji.
W tym przykładzie zadanie polega na utworzeniu obliczeń grupujących transakcje w segmenty dwumiesięczne i zwracających znacznik czasu ostatniej milisekundy segmentu dla każdej transakcji jako miary w obiekcie wykresu aplikacji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
date
Aby pobrać znacznik czasu ostatniej milisekundy dwumiesięcznego segmentu, w którym zawarto transakcję, utwórz następujące miary:
=monthsEnd(2,date)
=timestamp(monthsend(2,date))
Tabela wynikowa
id
date
=monthsend(2,date)
=timestamp(monthsend(2,date))
8188
1/7/2022
02/28/2022
2/28/2022 11:59:59 PM
8189
1/19/2022
02/28/2022
2/28/2022 11:59:59 PM
8190
2/5/2022
02/28/2022
2/28/2022 11:59:59 PM
8191
2/28/2022
02/28/2022
2/28/2022 11:59:59 PM
8192
3/16/2022
04/30/2022
4/30/2022 11:59:59 PM
8193
4/1/2022
04/30/2022
4/30/2022 11:59:59 PM
8194
5/7/2022
06/30/2022
6/30/2022 11:59:59 PM
8195
5/22/2022
06/30/2022
6/30/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
08/31/2022
8/31/2022 11:59:59 PM
8199
7/22/2022
08/31/2022
8/31/2022 11:59:59 PM
8200
7/23/2022
08/31/2022
8/31/2022 11:59:59 PM
8201
7/27/2022
08/31/2022
8/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
10/31/2022
10/31/2022 11:59:59 PM
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 bi_monthly_end jest tworzone jako miara w obiekcie wykresu przy użyciu funkcji monthsend(). Pierwszy podany argument ma wartość 2, która dzieli rok na segmenty dwumiesięczne. Pierwszy podany argument określa, które pole jest oceniane.
Transakcja 8195 ma miejsce 22 maja. Funkcja monthsend() początkowo dzieli rok na segmenty dwumiesięczne. Transakcja 8195 należy do segmentu od 1 maja do 30 czerwca. W wyniku funkcja zwraca pierwszą milisekundę tego segmentu – 30.06.2022, godz. 23:59:59.
Przykład 5 — scenariusz
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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ęść wybranego okresu. Rok obrotowy rozpoczyna się w styczniu.
Funkcja monthsend() przyjmuje dane od użytkownika jako pierwszy argument i dzisiejszą datę jako drugi argument. Zwraca datę końcową dla okresu wybranego przez użytkownika. Następnie wyrażenie zwraca liczbę dni pozostałych w wybranym okresie przez odjęcie bieżącej daty od daty zakończenia.
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łych dniach tego okresu.
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!