Эта функция возвращает значение, соответствующее метке времени последней миллисекунды месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия, содержащих базовую дату. Также можно найти метку времени окончания для предыдущего или последующего временного периода. По умолчанию для вывода используется формат DateFormat, установленный в скрипте.
Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четыре месяца) или 6 (полугодие).
date
Дата или метка времени для вычисления.
period_no
Период можно сместить, задав значение в поле period_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие периоды, положительные — последующие.
first_month_of_year
Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year.
Функция monthsend() делит год на сегменты на основе предоставленного аргумента n_months. Затем она проверяет, к какому сегменту относится каждая переданная дата, и возвращает последнюю миллисекунду этого сегмента в формате даты. Функция может возвращать метку времени окончания предыдущих или последующих сегментов, а также переопределять первый месяц года.
В качестве аргументов n_month в функции доступны следующие сегменты года.
Аргументы n_month
Период
Количество месяцев
месяц
1
два месяца
2
квартал
3
четыре месяца
4
полгода
6
Когда это следует использовать
Функция monthsend() используется в составе выражения, когда пользователю необходимо учитывать в расчетах часть месяца, которая уже прошла. Пользователю предоставляется возможность с помощью переменной выбрать необходимый период. Например, monthsend() может передавать входную переменную, чтобы пользователь мог вычислить общий процент, еще не начисленный за месяц, квартал или полугодие.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Примеры функции
Пример
Результат
monthsend(4, '07/19/2013')
Возвращает 08/31/2013.
monthsend(4, '10/19/2013', -1)
Возвращает 08/31/2013.
monthsend(4, '10/19/2013', 0, 2)
Возвращает 01/31/2014. Поскольку началом года становится месяц 2.
Пример 1. Базовый пример
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Поле даты, предоставленное в формате переменной системы DateFormat ((MM/DD/YYYY)).
Предшествующий оператор load, который содержит следующее:
Функция monthsend, заданная как поле bi_monthly_end. Она группирует транзакции по двухмесячным сегментам.
Функция timestamp, которая возвращает начальную метку времени сегмента для каждой транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
bi_monthly_end
bi_monthly_end_timestamp
Результирующая таблица
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
Поле bi_monthly_end создано в предыдущем операторе load с помощью функции monthsend(). Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.
Транзакция 8195 совершена 22 мая. Функция monthsend() изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. В результате функция возвращает последнюю миллисекунду этого сегмента, 06/30/2022 11:59:59 PM.
Пример 2. Аргумент period_no
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
В этом примере стоит задача создать поле prev_bi_monthly_end, которое возвращает первую миллисекунду двухмесячного сегмента, предшествующего совершению транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
prev_bi_monthly_end
prev_bi_monthly_end_timestamp
Результирующая таблица
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
Используя значение -1 для аргумента period_no, функция monthsend() первоначально делит год на двухмесячные сегменты, а затем возвращает последнюю миллисекунду предыдущего двухмесячного сегмента для момента, когда происходит транзакция.
Транзакция 8195 совершена в сегменте с мая по июнь. В результате идентифицирован предыдущий двухмесячный сегмент с 1 марта по 30 апреля, поэтому функция вернула последнюю миллисекунду этого сегмента, 04/30/2022 11:59:59 PM.
Пример 3. Аргумент first_month_of_year
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
В этом примере политика организации устанавливает апрель в качестве первого месяца финансового года.
Создание поля bi_monthly_end, которое группирует транзакции по двухмесячным сегментам, и возвращает метку времени последней миллисекунды сегмента для каждой транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
bi_monthly_end
bi_monthly_end_timestamp
Результирующая таблица
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
Используя 4 в качестве аргумента first_month_of_year, функция monthsend() начинает год 1 апреля, а затем делит его на двухмесячные сегменты. Apr-May (апрель-май), Jun-Jul (июнь-июль), Aug-Sep (август-сентябрь), Oct-Nov (октябрь-ноябрь), Dec-Jan (декабрь-январь), Feb-Mar (февраль-март).
Транзакция 8195 состоялась 22 мая и попадает в сегмент с 1 апреля по 31 мая. В результате функция возвращает последнюю миллисекунду этого сегмента, 05/31/2022 11:59:59 PM.
Пример 4. Пример объекта диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных.
В это примере стоит задача создать расчет, который группирует транзакции по двухмесячным сегментам и возвращает метку времени последней миллисекунды сегмента для каждой транзакции, в качестве меры в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
date
Чтобы получить метку времени последней миллисекунды двухмесячного сегмента, в течение которого совершена транзакция, создайте следующие меры:
=monthsEnd(2,date)
=timestamp(monthsend(2,date))
Результирующая таблица
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
Поле bi_monthly_end создается как мера в объекте диаграммы с помощью функции monthsend(). Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.
Транзакция 8195 совершена 22 мая. Функция monthsend() изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. В результате функция возвращает последнюю миллисекунду этого сегмента, 06/30/2022 11:59:59 PM.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
В этом примере набор данных загружается в таблицу под именем Employee_Expenses. Данная таблица содержит следующие поля:
Employee IDs (Идентификаторы сотрудников)
Employee names (Имена сотрудников)
Средние ежедневные заявки на возмещение расходов каждого сотрудника.
Конечному пользователю требуется получить диаграмму, которая по идентификатору и имени сотрудника отображает ожидаемые расходы в течение оставшейся части выбранного периода. Финансовый год начинается в январе.
Функция monthsend() использует ввод пользователя в качестве первого аргумента и сегодняшнюю дату в качестве второго аргумента. Она возвращает дату окончания выбранного пользователем периода. Затем выражение возвращает количество дней, оставшихся в выбранном периоде, вычитая сегодняшнюю дату из даты окончания.
Затем это значение умножается на среднюю ежедневную заявку на возмещение расходов каждого сотрудника для расчета оценочной суммы заявок, которые каждый сотрудник должен подать за оставшиеся дни этого периода.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!