quarterend — funkcja skryptu i funkcja wykresu
Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu ostatniej milisekundy kwartału zawierającego wartość date. Domyślnym formatem wyjściowym będzie format DateFormat skonfigurowany w skrypcie.
Składnia:
QuarterEnd(date[, period_no[, first_month_of_year]])
Typ zwracanych danych: dual
Funkcja quarterend() określa, w którym kwartale wypada data. Następnie zwraca znacznik czasu, w formacie daty, ostatniej milisekundy ostatniego miesiąca tego kwartału\. Pierwszym miesiącem roku jest domyślnie styczeń. Możesz jednak również zmienić pierwszy dzień tygodnia, używając argumentu first_month_of_year w funkcji quarterend().
Kiedy używać
Funkcja quarterend() jest używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka kwartału, 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 kwartału.
Argument | Opis |
---|---|
date | Data lub znacznik czasu do oszacowania. |
period_no | period_no jest liczbą całkowitą, gdzie 0 oznacza kwartał, który zawiera datę date. Wartości ujemne parametru period_no oznaczają kwartały poprzednie, a wartości dodatnie — kwartały 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. |
Aby ustawić pierwszy miesiąc roku w argumencie first_month_of_year, możesz użyć następujących wartości:
Miesiąc | Wartość |
---|---|
Luty | 2 |
Marzec | 3 |
Kwiecień | 4 |
May | 5 |
Czerwiec | 6 |
Lipiec | 7 |
Sierpień | 8 |
Wrzesień | 9 |
Październik | 10 |
Listopad | 11 |
Grudzień |
12 |
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 | Wynik |
---|---|
quarterend('10/29/2005') | Returns 12/31/2005 23:59:59. |
quarterend('10/29/2005', -1) | Returns 09/30/2005 23:59:59. |
quarterend('10/29/2005', 0, 3) | Returns 11/30/2005 23:59:59. |
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.
-
Ładunek poprzedzający, który zawiera następujące elementy:
-
Funkcja quarterend(), która jest ustawiona jako pole end_of_quarter i zwraca znacznik czasu końca kwartału, w którym miały miejsce transakcje.
-
Funkcja timestamp(), która jest ustawiona jako pole end_of_quarter_timestamp i zwraca dokładny znacznik czasu końca wybranego kwartału.
-
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date) as end_of_quarter,
timestamp(quarterend(date)) as end_of_quarter_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_quarter
-
end_of_quarter_timestamp
id | date | end_of_quarter | end_of_quarter_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/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 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/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 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/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 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Pole „end_of_quarter” jest tworzone w poprzedzającej instrukcji LOAD przez użycie funkcji quarterend() i przekazanie pola daty jako jej argumentu.
Funkcja quarterend() początkowo identyfikuje, w którym kwartale przypada wartość daty, i zwraca znacznik czasu ostatniej milisekundy danego kwartału.
Transakcja 8203 miała miejsce 8 sierpnia. Funkcja quarterend() stwierdza, że transakcja miała miejsce w trzecim kwartale oraz zwraca ostatnią milisekundę tego kwartału – 30 września, godz. 23:59:59.
Przykład 2 – period_no
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.
-
Ładunek poprzedzający, który zawiera następujące elementy:
-
Funkcja quarterend(), która jest ustawiona jako pole previous_quarter_end i zwraca znacznik czasu końca kwartału przed tym, w którym miała miejsce transakcja.
-
Funkcja timestamp(), która jest ustawiona jako pole previous_end_of_quarter_timestamp i zwraca dokładny znacznik czasu końca kwartału przed tym, w którym miała miejsce transakcja.
-
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, -1) as previous_quarter_end,
timestamp(quarterend(date, -1)) as previous_quarter_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_quarter_end
-
previous_quarter_end_timestamp
id | date | previous_quarter_end | previous_quarter_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 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8193 | 4/1/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8194 | 5/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8195 | 5/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 03/31/2022 | 3/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 | 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 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8207 | 10/29/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
Ponieważ period_no o wartości -1 używa się jako argumentu przesunięcia w funkcji quarterend(), funkcja najpierw identyfikuje kwartał, w którym odbywają się transakcje. Następnie przesuwa zakres o kwartał wstecz i identyfikuje ostatnią milisekundę tego kwartału.
Transakcja 8203 miała miejsce 8 sierpnia. Funkcja quarterend() stwierdza, że kwartał przed datą transakcji obejmował okres od 1 kwietnia do 30 czerwca. Funkcja zwraca ostatnią milisekundę tego kwartału – 30 czerwca, godz. 23:59:59.
Przykład 3 — first_month_of_year
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.
-
Ładunek poprzedzający, który zawiera następujące elementy:
-
Funkcja quarterend(), która jest ustawiona jako pole end_of_quarter i zwraca znacznik czasu końca kwartału, w którym miały miejsce transakcje.
-
Funkcja timestamp(), która jest ustawiona jako pole end_of_quarter_timestamp i zwraca dokładny znacznik czasu końca wybranego kwartału.
-
Jednak w tym przykładzie zgodnie z polityką firmy rok podatkowy zaczyna się 1 marca.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, 0, 3) as end_of_quarter,
timestamp(quarterend(date, 0, 3)) as end_of_quarter_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
id | date | end_of_quarter | end_of_quarter_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 | 05/31/2022 | 5/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/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 08/31/2022 | 8/31/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 | 11/30/2022 | 11/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 |
Ponieważ jako argument first_month_of_year funkcji quarterend() przekazano wartość 3, początek roku został przesunięty z 1 stycznia na 1 marca.
Transakcja 8203 miała miejsce 8 sierpnia. Ponieważ rok zaczyna się 1 marca, kwartały w nim obejmują miesiące marzec-maj, czerwiec-sierpień, wrzesień-listopad oraz grudzień-luty.
Funkcja quarterend() stwierdza, że transakcja miała miejsce w kwartale od czerwca do sierpnia i zwraca ostatnią milisekundę tego kwartału – 31 sierpnia, 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. Obliczenia zwracające znacznik czasu końca kwartału, w którym wystąpiły transakcje, jest tworzone jako miara na wykresie w 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 te pola jako wymiary:
-
id
-
date
Aby obliczyć koniec kwartału, w którym zawarto transakcję, utwórz następujące miary:
-
=quarterend(date)
-
=timestamp(quarterend(date))
id | date | =quarterend(date) | =timestamp(quarterend(date)) |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/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 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/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 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/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 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
Pole „end_of_quarter” jest tworzone w poprzedzającej instrukcji LOAD przez użycie funkcji quarterend() i przekazanie pola daty jako jej argumentu.
Funkcja quarterend() początkowo identyfikuje, w którym kwartale przypada wartość daty, i zwraca znacznik czasu ostatniej milisekundy danego kwartału.
Transakcja 8203 miała miejsce 8 sierpnia. Funkcja quarterend() stwierdza, że transakcja miała miejsce w trzecim kwartale oraz zwraca ostatnią milisekundę tego kwartału – 30 września, godz. 23:59:59.
Przykład 5 — scenariusz
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
-
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 obiekt wykresu wyświetlał, według identyfikatora pracownika oraz imienia i nazwiska pracownika, szacowane roszczenia z tytułu wydatków do poniesienia przez pozostałą część kwartału. Rok obrotowy rozpoczyna się w styczniu.
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ę:
-
=(quarterend(today(1))-today(1))*avg_daily_claim
Ustaw Formatowanie liczb miary na Waluta.
employee_id | employee_name | =(quarterend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $480.00 |
183 | Deryck | $400.00 |
184 | Dexter | $400.00 |
185 | Sydney | $864.00 |
186 | Agatha | $576.00 |
Funkcja quarterend() używa bieżącej daty jako swojego jedynego argumentu i zwraca datę końcową bieżącego miesiąca. Następnie odejmuje bieżącą datę od daty końca roku i wyrażenie zwraca liczbę dni pozostałych w tym miesiącu.
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 kwartału.