Эта функция возвращает значение, соответствующее метке времени первой миллисекунды первого дня лунной недели, содержащей значение, указанное в поле date. При определении лунных недель в Qlik Sense первым днем первой недели считается 1 января. Все недели, кроме последней будут содержать ровно 7 дней.
Функция lunarweekstart() определяет, на какую лунную неделю выпадает date. Затем она возвращает метку времени в формате даты для первой миллисекунды этой недели.
Диаграмма с примером функции lunarweekstart()
Аргументы
Аргумент
Описание
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() определяет, к какой лунной неделе относится дата, и возвращает метку времени для первой миллисекунды этой недели.
Диаграмма функции 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, функция сначала определяет лунную неделю, в течение которой совершаются транзакции. Затем она возвращается на неделю назад и определяет первую миллисекунду предыдущей лунной недели.
Диаграмма функции lunarweekstart(), пример с аргументом period_no
Транзакция 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 января.
Диаграмма функции lunarweekstart(), пример с аргументом first_week_day
Транзакция 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() определяет, к какой лунной неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.
Диаграмма функции lunarweekstart(), пример с объектом диаграммы
Транзакция 8189 совершена 19 января. Функция lunarweekstart() определяет, что лунная неделя начинается 15 января. Поэтому значение start_of_week для этой транзакции возвращает первую миллисекунду этого дня, то есть 15 января в 00:00:00 (12:00:00 AM).
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор остатков по кредитам, который загружается в таблицу под именем Loans.
Данные, включая идентификаторы кредитов, остаток на начало недели и простую процентную ставку, взимаемую по каждому кредиту за год.
Конечному пользователю требуется объект диаграммы, который будет отображать по идентификатору кредита текущий процент, начисленный по каждому кредиту в течение недели до текущей даты.
Используя сегодняшнюю дату в качестве единственного аргумента, функция lunarweekstart() возвращает дату начала текущего года. Вычитая этот результат из текущей даты, выражение возвращает количество дней, прошедших до сих пор в течение этой недели.
Затем это значение умножается на процентную ставку и делится на 365, чтобы получить эффективную процентную ставку начисленную за этот период. После этого результат умножается на начальный остаток кредита, чтобы вернуть проценты, начисленные до сих пор в течение этой недели.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!