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