Эта функция возвращает значение, которое соответствует метке времени, равной последней миллисекунде последнего дня календарной недели, содержащей date. По умолчанию для вывода используется формат DateFormat, заданный в скрипте.
Функция weekend() определяет, на какой день недели приходится дата. Затем она возвращает метку времени в формате даты для последней миллисекунды этой недели. Первый день недели определяется переменной среды FirstWeekDay. Однако ее можно переопределить с помощью аргумента first_week_day в функции weekend().
Аргументы
Аргумент
Описание
timestamp
Дата или метка времени для вычисления.
period_no
shift — целое число, где 0 обозначает неделю, включающую значение, указанное в поле date. Отрицательные значения, заданные в поле shift, означают предшествующие недели, положительные — последующие.
first_week_day
Указывает день начала недели. Если не указано, используется значение переменной FirstWeekDay.
Возможные значения для first_week_day: 0 — понедельник, 1 — вторник, 2 — среда, 3 — четверг, 4 — пятница, 5 — суббота и 6 — воскресенье.
Для получения дополнительной информации о системной переменной см. FirstWeekDay
Когда это следует использовать
Функция weekend() широко используется в составе выражения, когда пользователю требуется учитывать в расчетах оставшиеся дни недели, к которой относится указанная дата. Например, с ее помощью можно рассчитать общую сумму процентов, еще не начисленных в течение недели.
В следующих примерах используется:
SET FirstWeekDay=0;
Пример
Результат
weekend('01/10/2013')
Возвращает 01/12/2013 23:59:59.
weekend('01/10/2013', -1)
Возвращает 01/05/2013 23:59:59..
weekend('01/10/2013', 0, 1)
Возвращает 01/14/2013 23:59:59.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. Изменение региональных настроек для создания приложений и скриптов.
Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.
Если требуется использовать параметры ISO для недель и номеров недель, убедитесь, что в скрипте содержится следующее:
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
Если требуется использовать параметры US, убедитесь, что в скрипте содержится следующее:
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
Приведенные выше примеры дают следующие результаты функции weekend():
Пример функции Weekend
Date
Конец недели ISO
Конец недели US
Sat 2020 Dec 26
2020-12-27
12/26/2020
Sun 2020 Dec 27
2020-12-27
1/2/2021
Mon 2020 Dec 28
2021-01-03
1/2/2021
Tue 2020 Dec 29
2021-01-03
1/2/2021
Wed 2020 Dec 30
2021-01-03
1/2/2021
Thu 2020 Dec 31
2021-01-03
1/2/2021
Fri 2021 Jan 1
2021-01-03
1/2/2021
Sat 2021 Jan 2
2021-01-03
1/2/2021
Sun 2021 Jan 3
2021-01-03
1/9/2021
Mon 2021 Jan 4
2021-01-10
1/9/2021
Tue 2021 Jan 5
2021-01-10
1/9/2021
Примечание к информацииКонец недели выпадает на воскресенье в столбце ISO и на субботу в столбце US.
Пример 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/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
3/19/2022 11:59:59 PM
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
Поле end_of_week создано предшествующим оператором load с использованием функции weekend(), где в качестве аргумента функции передано поле даты.
Функция weekend() определяет, к какой неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.
Транзакция 8191 совершена 5 февраля. Системная переменная FirstWeekDay задает в качестве первого дня недели воскресенье. Функция weekend() определяет, что первой субботой после 5 февраля и, следовательно, последним днем недели, является 5 февраля. Таким образом, значение end_of_week для этой транзакции возвращает последнюю миллисекунду этого дня, то есть 23:59:59 (11:59:59 PM) 5 февраля.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля previous_week_end, возвращающего метку времени начала недели, которая предшествует совершению транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
previous_week_end
previous_week_end_timestamp
Результирующая таблица
date
end_of_week
end_of_week_timestamp
1/7/2022
01/01/2022
1/1/2022 11:59:59 PM
1/19/2022
01/15/2022
1/15/2022 11:59:59 PM
2/5/2022
01/29/2022
1/29/2022 11:59:59 PM
2/28/2022
02/26/2022
2/26/2022 11:59:59 PM
3/16/2022
03/12/2022
3/12/2022 11:59:59 PM
4/1/2022
03/26/2022
3/26/2022 11:59:59 PM
5/7/2022
04/30/2022
4/30/2022 11:59:59 PM
5/16/2022
05/14/2022
5/14/2022 11:59:59 PM
6/15/2022
06/11/2022
6/11/2022 11:59:59 PM
6/26/2022
06/25/2022
6/25/2022 11:59:59 PM
7/9/2022
07/02/2022
7/2/2022 11:59:59 PM
7/22/2022
07/16/2022
7/16/2022 11:59:59 PM
7/23/2022
07/16/2022
7/16/2022 11:59:59 PM
7/27/2022
07/23/2022
7/23/2022 11:59:59 PM
8/2/2022
07/30/2022
7/30/2022 11:59:59 PM
8/8/2022
08/06/2022
8/6/2022 11:59:59 PM
8/19/2022
08/13/2022
8/13/2022 11:59:59 PM
9/26/2022
09/24/2022
9/24/2022 11:59:59 PM
10/14/2022
10/08/2022
10/8/2022 11:59:59 PM
10/29/2022
10/22/2022
10/22/2022 11:59:59 PM
В этом случае, так как в качестве аргумента смещения в функции weekend() использовалось period_no = -1, функция сначала определяет неделю, в течение которой совершены транзакции. Затем она возвращается на неделю назад и определяет последнюю миллисекунду предыдущей недели.
Транзакция 8196 совершена 15 июня. Функция weekend() определяет, что неделя начинается 12 июня. Таким образом, предыдущая неделя заканчивается 11 июня в 23:59:59 (11:59:59 PM). Именно это значение возвращается для поля previous_week_end.
Пример 3. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере требуется задать вторник в качестве первого дня недели.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
end_of_week
end_of_week_timestamp
Результирующая таблица
date
end_of_week
end_of_week_timestamp
1/7/2022
01/10/2022
1/10/2022 11:59:59 PM
1/19/2022
01/24/2022
1/24/2022 11:59:59 PM
2/5/2022
02/07/2022
2/7/2022 11:59:59 PM
2/28/2022
02/28/2022
2/28/2022 11:59:59 PM
3/16/2022
03/21/2022
3/21/2022 11:59:59 PM
4/1/2022
04/04/2022
4/4/2022 11:59:59 PM
5/7/2022
05/09/2022
5/9/2022 11:59:59 PM
5/16/2022
05/16/2022
5/16/2022 11:59:59 PM
6/15/2022
06/20/2022
6/20/2022 11:59:59 PM
6/26/2022
06/27/2022
6/27/2022 11:59:59 PM
7/9/2022
07/11/2022
7/11/2022 11:59:59 PM
7/22/2022
07/25/2022
7/25/2022 11:59:59 PM
7/23/2022
07/25/2022
7/25/2022 11:59:59 PM
7/27/2022
08/01/2022
8/1/2022 11:59:59 PM
8/2/2022
08/08/2022
8/8/2022 11:59:59 PM
8/8/2022
08/08/2022
8/8/2022 11:59:59 PM
8/19/2022
08/22/2022
8/22/2022 11:59:59 PM
9/26/2022
09/26/2022
9/26/2022 11:59:59 PM
10/14/2022
10/17/2022
10/17/2022 11:59:59 PM
10/29/2022
10/31/2022
10/31/2022 11:59:59 PM
В этом случае, поскольку аргумент first_week_date =1 используется в функции weekend(), в качестве первого дня недели задан вторник.
Транзакция 8191 совершена 5 февраля. Функция weekend() определяет, что первым понедельником после этой даты и, следовательно, последним днем недели является 6 февраля, и возвращается значение 23:59:59 (11:59:59 PM) 6 февраля.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий метку времени окончания недели, в котором совершены транзакции, создается как мера в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.
Чтобы рассчитать начало недели, когда была совершена транзакция, добавьте следующие меры:
=weekend(date)
=timestamp(weekend(date))
Результирующая таблица
date
=weekend(date)
=timestamp(weekend(date))
1/7/2022
01/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
3/19/2022 11:59:59 PM
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
Мера end_of_week создана в объекте диаграммы с использованием функции weekend(), где в качестве аргумента функции передано поле даты. Функция weekend() определяет, к какой неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.
Транзакция 8191 совершена 5 февраля. Системная переменная FirstWeekDay задает в качестве первого дня недели воскресенье. Функция weekend() определяет, что первой субботой после 5 февраля и, следовательно, последним днем недели, является 5 февраля. Таким образом, значение end_of_week для этой транзакции возвращает последнюю миллисекунду этого дня, то есть 23:59:59 (11:59:59 PM) 5 февраля.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу под именем Employee_Expenses
Данные, включающие идентификаторы сотрудников, имена сотрудников и средние ежедневные заявки на возмещение расходов каждого сотрудника.
Конечному пользователю требуется получить объект диаграммы, отображающий по идентификатору и имени сотрудника расчетные расходы, которые еще предстоит понести в течение оставшейся части недели.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
employee_id
employee_name
Затем создайте меру, чтобы рассчитать накопленный процент:
=(weekend(today(1))-today(1))*avg_daily_claim
Задайте параметру меры Формат чисел значение Денежный.
Результирующая таблица
employee_id
employee_name
=(weekend(today(1))-today(1))*avg_daily_claim
182
Mark
$90.00
183
Deryck
$75.00
184
Dexter
$75.00
185
Sydney
$162.00
186
Agatha
$108.00
Используя сегодняшнюю дату в качестве единственного аргумента, функция weekend() возвращает дату окончания текущей недели. Затем, вычитая сегодняшнюю дату из даты окончания недели, выражение возвращает количество дней, оставшихся в этой неделе.
Затем это значение умножается на среднюю ежедневную заявку на возмещение расходов каждого сотрудника для расчета оценочной суммы заявок, которые каждый сотрудник должен подать за оставшиеся дни недели.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!