quarterend — функция скриптa и диаграммы
Эта функция возвращает значение, соответствующее метке времени, включающей последнюю миллисекунду квартала, содержащего значение, указанное в поле date. По умолчанию для вывода используется формат DateFormat, установленный в скрипте.
Синтаксис:
QuarterEnd(date[, period_no[, first_month_of_year]])
Возвращаемые типы данных: двойное значение
Функция 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') | 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. |
Пример 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() первоначально определяет, к какому кварталу относится значение даты, и затем возвращает метку времени для последней миллисекунды этого квартала.
Транзакция 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() сначала определяет квартал, в течение которого совершены транзакции. Затем она возвращается на квартал назад и определяет последнюю миллисекунду предыдущего квартала.
Транзакция 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 марта.
Транзакция 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() первоначально определяет, к какому кварталу относится значение даты, и затем возвращает метку времени для последней миллисекунды этого квартала.
Транзакция 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() возвращает дату окончания текущего месяца, используя сегодняшнюю дату в качестве единственного аргумента. Затем она вычитает сегодняшнюю дату из даты окончания, и выражение возвращает количество дней, оставшихся в этом месяце.
Затем это значение умножается на среднюю ежедневную заявку на возмещение расходов каждого сотрудника для расчета оценочной суммы заявок, которые каждый сотрудник должен подать до конца квартала.