Эта функция возвращает значение, соответствующее метке времени последней миллисекунды последнего дня лунной недели, содержащей значение, указанное в поле date. При определении лунных недель в Qlik Sense первым днем первой недели считается 1 января. Все недели, кроме последней будут содержать ровно 7 дней.
Синтаксис:
LunarweekEnd(date[, period_no[, first_week_day]])
Возвращаемые типы данных: двойное значение
Функция lunarweekend() определяет, на какую лунную неделю выпадает date. Затем она возвращает метку времени в формате даты для последней миллисекунды этой недели.
Аргументы
Аргумент
Описание
date
Дата или метка времени для вычисления.
period_no
period_no является целым числом или выражением, определяемым по целому числу, где значение 0 означает лунную неделю, содержащую значение, указанное в поле date. Отрицательные значения, заданные в поле period_no, означают предшествующие лунные недели, положительные — последующие.
first_week_day
Смещение, которое может быть больше или меньше нуля. Оно изменяет начало года указанным количеством дней и/или десятичных значений.
Когда это следует использовать
Функция lunarweekend() широко используется в составе выражения, когда пользователю требуется учитывать в расчетах часть недели, которая еще не прошла. В отличие от функции weekend(), заключительная лунная неделя каждого календарного года заканчивается 31 декабря. Например, функцию lunarweekend() можно использовать для расчета процента, еще не начисленного в течение недели.
Примеры функции
Пример
Результат
lunarweekend('01/12/2013')
Возвращает 01/14/2013 23:59:59.
lunarweekend('01/12/2013', -1)
Возвращает 01/07/2013 23:59:59.
lunarweekend('01/12/2013', 0, 1)
Возвращает 01/15/2013 23:59:59.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Без дополнительных аргументов
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Создание поля end_of_week, возвращающего метку времени окончания лунной недели, в течение которой совершены транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
end_of_week
end_of_week_timestamp
Результирующая таблица
date
end_of_week
end_of_week_timestamp
1/7/2022
01/07/2022
1/7/2022 11:59:59 PM
1/19/2022
01/21/2022
1/21/2022 11:59:59 PM
2/5/2022
02/11/2022
2/11/2022 11:59:59 PM
2/28/2022
03/04/2022
3/4/2022 11:59:59 PM
3/16/2022
03/18/2022
3/18/2022 11:59:59 PM
4/1/2022
04/01/2022
4/1/2022 11:59:59 PM
5/7/2022
05/13/2022
5/13/2022 11:59:59 PM
5/16/2022
05/20/2022
5/20/2022 11:59:59 PM
6/15/2022
06/17/2022
6/17/2022 11:59:59 PM
6/26/2022
07/01/2022
7/1/2022 11:59:59 PM
7/9/2022
07/15/2022
7/15/2022 11:59:59 PM
7/22/2022
07/22/2022
7/22/2022 11:59:59 PM
7/23/2022
07/29/2022
7/29/2022 11:59:59 PM
7/27/2022
07/29/2022
7/29/2022 11:59:59 PM
8/2/2022
08/05/2022
8/5/2022 11:59:59 PM
8/8/2022
08/12/2022
8/12/2022 11:59:59 PM
8/19/2022
08/19/2022
8/19/2022 11:59:59 PM
9/26/2022
09/30/2022
9/30/2022 11:59:59 PM
10/14/2022
10/14/2022
10/14/2022 11:59:59 PM
10/29/2022
11/04/2022
11/4/2022 11:59:59 PM
Поле end_of_week создано предшествующим оператором load с использованием функции lunarweekend(), где в качестве аргумента передано поле date.
Функция lunarweekend() определяет, к какой лунной неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.
Транзакция 8189 совершена 19 января. Функция lunarweekend() определяет, что лунная неделя начинается 15 января. Поэтому значение end_of_week для этой транзакции возвращает последнюю миллисекунду лунной недели, то есть 21 января в 23:59:59 (11:59:59 PM).
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля previous_lunar_week_end, возвращающего метку времени окончания лунной недели, которая предшествует совершению транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
previous_lunar_week_end
previous_lunar_week_end_timestamp
Результирующая таблица
date
previous_lunar_week_end
previous_lunar_week_end_timestamp
1/7/2022
12/31/2021
12/31/2021 11:59:59 PM
1/19/2022
01/14/2022
1/14/2022 11:59:59 PM
2/5/2022
02/04/2022
2/4/2022 11:59:59 PM
2/28/2022
02/25/2022
2/25/2022 11:59:59 PM
3/16/2022
03/11/2022
3/18/2022 11:59:59 PM
4/1/2022
03/25/2022
3/25/2022 11:59:59 PM
5/7/2022
05/06/2022
5/6/2022 11:59:59 PM
5/16/2022
05/13/2022
5/13/2022 11:59:59 PM
6/15/2022
06/10/2022
6/10/2022 11:59:59 PM
6/26/2022
06/24/2022
6/24/2022 11:59:59 PM
7/9/2022
07/08/2022
7/8/2022 11:59:59 PM
7/22/2022
07/15/2022
7/15/2022 11:59:59 PM
7/23/2022
07/22/2022
7/22/2022 11:59:59 PM
7/27/2022
07/22/2022
7/22/2022 11:59:59 PM
8/2/2022
07/29/2022
7/29/2022 11:59:59 PM
8/8/2022
08/05/2022
8/5/2022 11:59:59 PM
8/19/2022
08/12/2022
8/12/2022 11:59:59 PM
9/26/2022
09/23/2022
9/23/2022 11:59:59 PM
10/14/2022
10/07/2022
10/7/2022 11:59:59 PM
10/29/2022
10/28/2022
10/28/2022 11:59:59 PM
В этом случае, так как в качестве аргумента смещения в функции lunarweekend() использовалось period_no = -1, функция сначала определяет лунную неделю, в течение которой совершены транзакции. Затем она возвращается на неделю назад и определяет последнюю миллисекунду предыдущей лунной недели.
Транзакция 8189 совершена 19 января. Функция lunarweekend() определяет, что лунная неделя начинается 15 января. Таким образом, предыдущая лунная неделя началась 8 января и закончилась 14 января в 23:59:59 (11:59:59 PM). Именно это значение возвращается для поля previous_lunar_week_end.
Пример 3. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. В этом примере лунные недели начинаются с 5 января.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
end_of_week
end_of_week_timestamp
Результирующая таблица
date
end_of_week
end_of_week_timestamp
1/7/2022
01/11/2022
1/11/2022 11:59:59 PM
1/19/2022
01/25/2022
1/25/2022 11:59:59 PM
2/5/2022
02/08/2022
2/8/2022 11:59:59 PM
2/28/2022
03/01/2022
3/1/2022 11:59:59 PM
3/16/2022
03/22/2022
3/22/2022 11:59:59 PM
4/1/2022
04/05/2022
4/5/2022 11:59:59 PM
5/7/2022
05/10/2022
5/10/2022 11:59:59 PM
5/16/2022
05/17/2022
5/17/2022 11:59:59 PM
6/15/2022
06/21/2022
6/21/2022 11:59:59 PM
6/26/2022
06/28/2022
6/28/2022 11:59:59 PM
7/9/2022
07/12/2022
7/12/2022 11:59:59 PM
7/22/2022
07/26/2022
7/26/2022 11:59:59 PM
7/23/2022
07/26/2022
7/26/2022 11:59:59 PM
7/27/2022
08/02/2022
8/2/2022 11:59:59 PM
8/2/2022
08/02/2022
8/2/2022 11:59:59 PM
8/8/2022
08/09/2022
8/9/2022 11:59:59 PM
8/19/2022
08/23/2022
8/23/2022 11:59:59 PM
9/26/2022
09/27/2022
9/27/2022 11:59:59 PM
10/14/2022
10/18/2022
10/18/2022 11:59:59 PM
10/29/2022
11/01/2022
11/1/2022 11:59:59 PM
В этом примере используется аргумент first_week_date = 4 в функции lunarweekend(), потому начало года переносится с 1 на 5 января.
Транзакция 8189 совершена 19 января. Так как лунные недели начинаются 5 января, функция lunarweekend() определяет, что лунная неделя, к которой относится 19 января, также начинается в этот день. Таким образом, эта лунная неделя заканчивается 25 января в 23:59:59 (11:59:59 PM). Именно это значение возвращается для поля end_of_week.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который возвращает метку времени окончания лунной недели, в течение которой совершены транзакции, создается как мера в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.
Добавьте следующие меры:
=lunarweekend(date)
=timestamp(lunarweekend(date))
Результирующая таблица
date
=lunarweekend(date)
=timestamp(lunarweekend(date))
1/7/2022
01/07/2022
1/7/2022 11:59:59 PM
1/19/2022
01/21/2022
1/21/2022 11:59:59 PM
2/5/2022
02/11/2022
2/11/2022 11:59:59 PM
2/28/2022
03/04/2022
3/4/2022 11:59:59 PM
3/16/2022
03/18/2022
3/18/2022 11:59:59 PM
4/1/2022
04/01/2022
4/1/2022 11:59:59 PM
5/7/2022
05/13/2022
5/13/2022 11:59:59 PM
5/16/2022
05/20/2022
5/20/2022 11:59:59 PM
6/15/2022
06/17/2022
6/17/2022 11:59:59 PM
6/26/2022
07/01/2022
7/1/2022 11:59:59 PM
7/9/2022
07/15/2022
7/15/2022 11:59:59 PM
7/22/2022
07/22/2022
7/22/2022 11:59:59 PM
7/23/2022
07/29/2022
7/29/2022 11:59:59 PM
7/27/2022
07/29/2022
7/29/2022 11:59:59 PM
8/2/2022
08/05/2022
8/5/2022 11:59:59 PM
8/8/2022
08/12/2022
8/12/2022 11:59:59 PM
8/19/2022
08/19/2022
8/19/2022 11:59:59 PM
9/26/2022
09/30/2022
9/30/2022 11:59:59 PM
10/14/2022
10/14/2022
10/14/2022 11:59:59 PM
10/29/2022
11/04/2022
11/4/2022 11:59:59 PM
Мера end_of_week создана в объекте диаграммы с использованием функции lunarweekend(), где в качестве аргумента функции передано поле date.
Функция lunarweekend() определяет, к какой лунной неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.
Транзакция 8189 совершена 19 января. Функция lunarweekend() определяет, что лунная неделя начинается 15 января. Поэтому значение end_of_week для этой транзакции возвращает последнюю миллисекунду лунной недели, то есть 21 января в 23:59:59 (11:59:59 PM).
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу под именем Employee_Expenses
Идентификаторы сотрудников, имена сотрудников и средние ежедневные заявки на возмещение расходов каждого сотрудника.
Конечному пользователю требуется получить объект диаграммы, отображающий по идентификатору и имени сотрудника расчетные заявки на возмещение расходов, которые еще предстоят в течение оставшейся лунной недели.
Используя сегодняшнюю дату в качестве единственного аргумента, функция lunarkweekend() возвращает дату окончания текущей лунной недели. Затем, вычитая сегодняшнюю дату из даты окончания лунной недели, выражение возвращает количество дней, оставшихся в этой неделе.
Затем это значение умножается на среднюю ежедневную заявку на возмещение расходов каждого сотрудника для расчета оценочной суммы заявок, которые каждый сотрудник должен подать до конца лунной недели.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!