quarterend  — функция скриптa и диаграммы
                Эта функция возвращает значение, соответствующее метке времени, включающей последнюю миллисекунду квартала, содержащего значение, указанное в поле date. По умолчанию для вывода используется формат DateFormat, установленный в скрипте.
Синтаксис:
QuarterEnd(date[, period_no[, first_month_of_year]])
Возвращаемые типы данных: двойное значение
Диаграмма функции quarterend()

Функция quarterend() определяет, на какой квартал приходится дата. Затем она возвращает метку времени в формате даты для последней миллисекунды последнего месяца этого квартала. По умолчанию первым месяцем года является январь. Однако также можно изменить первый месяц, используя аргумент first_month_of_year в функции quarterend().
Когда это следует использовать
Функция quarterend() широко используется в составе выражения, когда в расчетах требуется учитывать часть квартала, которая еще не прошла, например, если требуется рассчитать общую сумму процентов, еще не начисленных в течение квартала.
| Аргумент | Описание | 
|---|---|
| date | Дата или метка времени для вычисления. | 
| period_no | period_no — целое число, где 0 обозначает квартал, включающий значение, указанное в поле date. Отрицательные значения, заданные в поле period_no, означают предшествующие кварталы, положительные — последующие. | 
| first_month_of_year | Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year. | 
Можно использовать следующие значения, чтобы задать первый месяц года в аргументе first_month_of_year:
| Месяц | Значение | 
|---|---|
| Февраль | 2 | 
| Март | 3 | 
| Апрель | 4 | 
| May | 5 | 
| Июнь | 6 | 
| Июль | 7 | 
| Август | 8 | 
| Сентябрь | 9 | 
| Октябрь | 10 | 
| Ноябрь | 11 | 
| 
                                     Декабрь  | 
                                12 | 
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
| Пример | Результат | 
|---|---|
| quarterend('10/29/2005') | Возвращает 12/31/2005 23:59:59. | 
| quarterend('10/29/2005', -1) | Возвращает 09/30/2005 23:59:59. | 
| quarterend('10/29/2005', 0, 3) | Возвращает 11/30/2005 23:59:59. | 
Пример 1. Базовый пример
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
- 
                                    
Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.
 - 
                                    
Предшествующая загрузка, которая содержит следующее:
- 
                                            
Функция quarterend(), заданная как поле end_of_quarter, которая возвращает метку времени конца квартала, в течение которого совершены транзакции.
 - 
                                            
Функция timestamp(), заданная как поле end_of_quarter_timestamp, которая возвращает точную метку времени конца выбранного квартала.
 
 - 
                                            
 
Скрипт загрузки
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 
]; Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
- 
                                    
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 | 
Поле end_of_quarter создано предшествующим оператором load с использованием функции quarterend(), где в качестве аргумента функции передано поле даты.
Функция quarterend() первоначально определяет, к какому кварталу относится значение даты, и затем возвращает метку времени для последней миллисекунды этого квартала.
Диаграмма функции quarterend(), определяющей конец квартала для транзакции 8203

Транзакция 8203 совершена 8 августа. Функция quarterend() определяет, что транзакция совершена в третьем квартале, и возвращает последнюю миллисекунду этого квартала, то есть 23:59:59 (11:59:59 PM) 30 сентября.
Пример 2. Аргумент period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
- 
                                    
Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.
 - 
                                    
Предыдущая загрузка, которая содержит следующее:
- 
                                            
Функция quarterend(), заданная как поле previous_quarter_end, которая возвращает метку времени конца квартала, предшествующего совершению транзакции.
 - 
                                            
Функция timestamp(), заданная как поле previous_end_of_quarter_timestamp, которая возвращает точную метку времени конца квартала, предшествующего совершению транзакции.
 
 - 
                                            
 
Скрипт загрузки
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 
]; Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
- 
                                    
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 | 
Так как в качестве аргумента смещения используется period_no = -1, функция quarterend() сначала определяет квартал, в течение которого совершены транзакции. Затем она возвращается на квартал назад и определяет последнюю миллисекунду предыдущего квартала.
Диаграмма функции quarterend() с period_no = -1.

Транзакция 8203 совершена 8 августа. Функция quarterend() определяет, что квартал, предшествующий совершению транзакции, начинается 1 апреля и заканчивается 30 июня. Затем функция возвращает последнюю миллисекунду этого квартала, 23:59:59 (11:59:59 PM) 30 июля.
Пример 3. Аргумент first_month_of_year
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
- 
                                    
Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.
 - 
                                    
Предыдущая загрузка, которая содержит следующее:
- 
                                            
Функция quarterend(), заданная как поле end_of_quarter, которая возвращает метку времени конца квартала, в течение которого совершены транзакции.
 - 
                                            
Функция timestamp(), заданная как поле end_of_quarter_timestamp, которая возвращает точную метку времени конца выбранного квартала.
 
 - 
                                            
 
Однако в этом примере согласно политике компании финансовый год начинается 1 марта.
Скрипт загрузки
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 
]; Результаты
| 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 | 
Так как используется аргумент first_month_of_year = 3 в функции quarterend(), начало года переносится с 1 января на 1 марта.
Диаграмма функции quarterend(), где в качестве первого месяца года задан март.

Транзакция 8203 совершена 8 августа. Так как год начинается 1 марта, он делится на кварталы март-май, июнь-август, сентябрь-ноябрь и декабрь-февраль.
Транзакция 8203 совершена 8 августа. Функция quarterend() определяет, что транзакция совершена в квартале с июня по август и возвращает последнюю миллисекунду этого квартала, то есть 23:59:59 (11:59:59 PM) 31 августа.
Пример 4. Пример объекта диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий метку времени окончания квартала, в котором совершены транзакции, создается как мера в диаграмме приложения.
Скрипт загрузки
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 
]; Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
- 
                                    
id
 - 
                                    
date
 
Чтобы рассчитать дату окончания квартала, в течение которого совершена транзакция, создайте следующие меры:
- 
                                    
=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 | 
Поле end_of_quarter создано предшествующим оператором load с использованием функции quarterend(), где в качестве аргумента функции передано поле даты.
Функция quarterend() первоначально определяет, к какому кварталу относится значение даты, и затем возвращает метку времени для последней миллисекунды этого квартала.
Диаграмма функции quarterend(), определяющей конец квартала для транзакции 8203

Транзакция 8203 совершена 8 августа. Функция quarterend() определяет, что транзакция совершена в третьем квартале, и возвращает последнюю миллисекунду этого квартала, то есть 23:59:59 (11:59:59 PM) 30 сентября.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
- 
                                    
Набор данных загружается в таблицу под именем Employee_Expenses. Данная таблица содержит следующие поля:
- 
                                            
Employee IDs (Идентификаторы сотрудников)
 - 
                                            
Employee names (Имена сотрудников)
 - 
                                            
Средние ежедневные заявки на возмещение расходов каждого сотрудника.
 
 - 
                                            
 
Конечному пользователю требуется получить объект диаграммы, отображающий по идентификатору и имени сотрудника расчетные расходы, которые еще предстоит понести в течение оставшейся части квартала. Финансовый год начинается в январе.
Скрипт загрузки
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 
]; Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
- 
                                    
employee_id
 - 
                                    
employee_name
 
Чтобы рассчитать накопленный процент, создайте следующую меру:
- 
                                    
=(quarterend(today(1))-today(1))*avg_daily_claim
 
Задайте параметру Формат чисел меры значение Денежный.
| 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 | 
Функция quarterend() возвращает дату окончания текущего месяца, используя сегодняшнюю дату в качестве единственного аргумента. Затем она вычитает сегодняшнюю дату из даты окончания, и выражение возвращает количество дней, оставшихся в этом месяце.
Затем это значение умножается на среднюю ежедневную заявку на возмещение расходов каждого сотрудника для расчета оценочной суммы заявок, которые каждый сотрудник должен подать до конца квартала.