# lunarweekstart Функция скрипта и диаграммы

Эта функция возвращает значение, соответствующее метке времени первой миллисекунды первого дня лунной недели, содержащей значение, указанное в поле date. При определении лунных недель в Qlik Sense первым днем первой недели считается 1 января. Все недели, кроме последней будут содержать ровно 7 дней.

Синтаксис:

LunarweekStart(date[, period\_no[, first\_week\_day]])

Возвращаемые типы данных: двойное значение

Функция `lunarweekstart()` определяет, на какую лунную неделю выпадает `date`. Затем она возвращает метку времени в формате даты для первой миллисекунды этой недели.

Диаграмма с примером функции `lunarweekstart()`

Диаграмма с примером функции `lunarweekstart()`

Диаграмма с примером функции `lunarweekstart()`lunarweekstart() ![Диаграмма с примером того, как функция lunarweekstart преобразует входную дату каждой транзакции в метку времени первой миллисекунды лунной недели, к которой относится эта дата.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-general.png)

Аргументы

| Аргумент | Описание |
| --- | --- |
| 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<br>)` | Возвращает 01/09/2013, поскольку first\_week\_day = 1, означает, что начало года изменяется переносится на 01/02/2013. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.

Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому вы обращаетесь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в Qlik Sense интерфейсе пользователя. Qlik Sense будет отображаться на том же языке, что и используемый вами браузер.

## Пример 1. Без дополнительных аргументов

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем `Transactions`.

* Поле даты было предоставлено в формате системной переменной `DateFormat` (MM/DD/YYYY).

* Создание поля `start_of_week`, возвращающего метку времени начала лунной недели, в течение которой совершены транзакции.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekstart(date) as start_of_week,
        timestamp(lunarweekstart(date)) as start_of_week_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `date`

* `start_of_week`

* `start_of_week_timestamp`

Результирующая таблица

| date | начало\_недели | начало\_недели\_Метка времени |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/15/2022 | 15.01.2022 00:00:00 |
| 2/5/2022 | 05.02.2022 | 05.02.2022 00:00:00 |
| 2/28/2022 | 26.02.2022 | 26.02.2022 00:00:00 |
| 3/16/2022 | 03/12/2022 | 12.03.2022 00:00:00 |
| 4/1/2022 | 26.03.2022 | 26.03.2022 00:00:00 |
| 5/7/2022 | 07.05.2022 | 07.05.2022 00:00:00 |
| 5/16/2022 | 14.05.2022 | 14.05.2022 00:00:00 |
| 6/15/2022 | 11.06.2022 | 11.06.2022 00:00:00 |
| 6/26/2022 | 25.06.2022 | 25.06.2022 00:00:00 |
| 7/9/2022 | 09.07.2022 | 09.07.2022 00:00:00 |
| 7/22/2022 | 16.07.2022 | 16.07.2022 00:00:00 |
| 7/23/2022 | 23.07.2022 | 23.07.2022 00:00:00 |
| 7/27/2022 | 23.07.2022 | 23.07.2022 00:00:00 |
| 8/2/2022 | 30.07.2022 | 30.07.2022 00:00:00 |
| 8/8/2022 | 06.08.2022 | 06.08.2022 00:00:00 |
| 8/19/2022 | 13.08.2022 | 13.08.2022 00:00:00 |
| 9/26/2022 | 24.09.2022 | 24.09.2022 12:00:00 AM |
| 10/14/2022 | 08.10.2022 | 08.10.2022 12:00:00 AM |
| 10/29/2022 | 10/29/2022 | 29.10.2022 12:00:00 AM |

Поле `start_of_week` создано предшествующим оператором load с использованием функции `lunarweekstart()`, где в качестве аргумента передано поле `date`.

Функция `lunarweekstart()` определяет, к какой лунной неделе относится дата, и возвращает метку времени для первой миллисекунды этой недели.

Диаграмма функции `lunarweekstart()`, пример без дополнительных аргументов

Диаграмма функции `lunarweekstart()`, пример без дополнительных аргументов

Диаграмма функции `lunarweekstart()`lunarweekstart(), пример без дополнительных аргументов ![Диаграмма, демонстрирующая, как функция lunarweekstart преобразует входную дату каждой транзакции в метку времени первой миллисекунды лунной недели, к которой относится эта дата.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-no-add-arg.png)

Транзакция 8189 совершена 19 января. Функция `lunarweekstart()` определяет, что лунная неделя начинается 15 января. Поэтому значение `start_of_week` для этой транзакции возвращает первую миллисекунду лунной недели, то есть 15 января в 00:00:00 (12:00:00 AM).

## Пример 2. Скрипт period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий, что в первом примере.

* Создание поля `previous_lunar_week_start`, возвращающего метку времени начала лунной недели, которая предшествует совершению транзакции.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekstart(date,-1) as previous_lunar_week_start,
        timestamp(lunarweekstart(date,-1)) as previous_lunar_week_start_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Результирующая таблица

| date | previous\_lunar\_week\_start | previous\_lunar\_week\_start\_Метка времени |
| --- | --- | --- |
| 1/7/2022 | 12/24/2021 | 12/24/2021 12:00:00 AM |
| 1/19/2022 | 01/08/2022 | 08.01.2022 00:00:00 |
| 2/5/2022 | 01/29/2022 | 29.01.2022 00:00:00 |
| 2/28/2022 | 02/19/2022 | 19.02.2022 00:00:00 |
| 3/16/2022 | 03/05/2022 | 05.03.2022 00:00:00 |
| 4/1/2022 | 03/19/2022 | 19.03.2022 00:00:00 |
| 5/7/2022 | 04/30/2022 | 30.04.2022 00:00:00 |
| 5/16/2022 | 07.05.2022 | 07.05.2022 00:00:00 |
| 6/15/2022 | 06/04/2022 | 04.06.2022 00:00:00 |
| 6/26/2022 | 06/18/2022 | 18.06.2022 00:00:00 |
| 7/9/2022 | 07/02/2022 | 02.07.2022 00:00:00 |
| 7/22/2022 | 09.07.2022 | 09.07.2022 00:00:00 |
| 7/23/2022 | 16.07.2022 | 16.07.2022 00:00:00 |
| 7/27/2022 | 16.07.2022 | 16.07.2022 00:00:00 |
| 8/2/2022 | 23.07.2022 | 23.07.2022 00:00:00 |
| 8/8/2022 | 30.07.2022 | 30.07.2022 00:00:00 |
| 8/19/2022 | 06.08.2022 | 06.08.2022 00:00:00 |
| 9/26/2022 | 09/17/2022 | 17.09.2022 00:00:00 |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/22/2022 | 22.10.2022 12:00:00 AM |

В этом случае, так как в качестве аргумента смещения в функции `lunarweekstart()` использовалось `period_no` = -1, функция сначала определяет лунную неделю, в течение которой совершаются транзакции. Затем она возвращается на неделю назад и определяет первую миллисекунду предыдущей лунной недели.

Диаграмма функции `lunarweekstart()`, пример с аргументом period\_no

Диаграмма функции `lunarweekstart()`, пример с аргументом period\_no

Диаграмма функции `lunarweekstart()`lunarweekstart(), пример с аргументом period\_no ![Диаграмма, демонстрирующая, как функция lunarweekstart преобразует входную дату каждой транзакции в метку времени первой миллисекунды лунной недели, к которой относится эта дата.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-period-no.png)

Транзакция 8189 совершена 19 января. Функция `lunarweekstart()` определяет, что лунная неделя начинается 15 января. Таким образом, предыдущая лунная неделя началась 8 января в 00:00:00 (12:00:00 AM). Именно это значение возвращается для поля `previous_lunar_week_start`.

## Пример 3. Аргумент first\_week\_day

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. В этом примере лунные недели начинаются с 5 января.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekstart(date,0,4) as start_of_week,
        timestamp(lunarweekstart(date,0,4)) as start_of_week_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
]; 
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `date`

* `start_of_week`

* `start_of_week_timestamp`

Результирующая таблица

| date | начало\_недели | начало\_недели\_Метка времени |
| --- | --- | --- |
| 1/7/2022 | 01/05/2022 | 05.01.2022 12:00:00 AM |
| 1/19/2022 | 01/19/2022 | 19.01.2022 12:00:00 AM |
| 2/5/2022 | 02/02/2022 | 02.02.2022 00:00:00 |
| 2/28/2022 | 02/23/2022 | 23.02.2022 00:00:00 |
| 3/16/2022 | 03/16/2022 | 16.03.2022 00:00:00 |
| 4/1/2022 | 03/30/2022 | 30.03.2022 00:00:00 |
| 5/7/2022 | 05/04/2022 | 04.05.2022 00:00:00 |
| 5/16/2022 | 05/11/2022 | 11.05.2022 00:00:00 |
| 6/15/2022 | 06/15/2022 | 15.06.2022 00:00:00 |
| 6/26/2022 | 06/22/2022 | 22.06.2022 00:00:00 |
| 7/9/2022 | 07/06/2022 | 06.07.2022 00:00:00 |
| 7/22/2022 | 20.07.2022 | 20.07.2022 00:00:00 |
| 7/23/2022 | 20.07.2022 | 20.07.2022 00:00:00 |
| 7/27/2022 | 27.07.2022 | 27.07.2022 00:00:00 |
| 8/2/2022 | 27.07.2022 | 27.07.2022 00:00:00 |
| 8/8/2022 | 08/03/2022 | 03.08.2022 00:00:00 |
| 8/19/2022 | 08/17/2022 | 17.08.2022 00:00:00 |
| 9/26/2022 | 09/21/2022 | 21.09.2022 00:00:00 |
| 10/14/2022 | 10/12/2022 | 12.10.2022 00:00:00 |
| 10/29/2022 | 10/26/2022 | 26.10.2022 00:00:00 |

В этом примере используется аргумент `first_week_date` = 4 в функции `lunarweekstart()`, потому начало года переносится с 1 на 5 января.

Диаграмма функции `lunarweekstart()` , пример с аргументом first\_week\_day

Диаграмма функции `lunarweekstart()` , пример с аргументом first\_week\_day

Диаграмма функции `lunarweekstart()`lunarweekstart() , пример с аргументом first\_week\_day ![ДОБАВЬТЕ ЗДЕСЬ ДРУГОЙ ТЕКСТ!!!!](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-first-week-day.png)

Транзакция 8189 совершена 19 января. Так как лунные недели начинаются 5 января, функция `lunarweekstart()` определяет, что лунная неделя, к которой относится 19 января, также начинается 19 января в 00:00:00 (12:00:00 AM). Поэтому это значение возвращается для поля `start_of_week`.

## Пример 4. Пример объекта диаграммы

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.

Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий метку времени начала лунной недели, в течение которой совершены транзакции, создается как мера в объекте диаграммы в приложении.

Скрипт загрузки

```
Transactions:
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.

Добавьте следующие меры:

=lunarweekstart(date)

=timestamp(lunarweekstart(date))

Результирующая таблица

| date | =lunarweekstart(date) | =Метка времени(lunarweekstart(date)) |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/15/2022 | 15.01.2022 00:00:00 |
| 2/5/2022 | 05.02.2022 | 05.02.2022 00:00:00 |
| 2/28/2022 | 26.02.2022 | 26.02.2022 00:00:00 |
| 3/16/2022 | 03/12/2022 | 12.03.2022 00:00:00 |
| 4/1/2022 | 26.03.2022 | 26.03.2022 00:00:00 |
| 5/7/2022 | 07.05.2022 | 07.05.2022 00:00:00 |
| 5/16/2022 | 14.05.2022 | 14.05.2022 00:00:00 |
| 6/15/2022 | 11.06.2022 | 11.06.2022 00:00:00 |
| 6/26/2022 | 25.06.2022 | 25.06.2022 00:00:00 |
| 7/9/2022 | 09.07.2022 | 09.07.2022 00:00:00 |
| 7/22/2022 | 16.07.2022 | 16.07.2022 00:00:00 |
| 7/23/2022 | 23.07.2022 | 23.07.2022 00:00:00 |
| 7/27/2022 | 23.07.2022 | 23.07.2022 00:00:00 |
| 8/2/2022 | 30.07.2022 | 30.07.2022 00:00:00 |
| 8/8/2022 | 06.08.2022 | 06.08.2022 00:00:00 |
| 8/19/2022 | 13.08.2022 | 13.08.2022 00:00:00 |
| 9/26/2022 | 24.09.2022 | 24.09.2022 12:00:00 AM |
| 10/14/2022 | 08.10.2022 | 08.10.2022 12:00:00 AM |
| 10/29/2022 | 10/29/2022 | 29.10.2022 12:00:00 AM |

Мера start\_of\_week создана в объекте диаграммы с использованием функции lunarweekstart(), где в качестве аргумента функции передано поле даты.

Функция lunarweekstart() определяет, к какой лунной неделе относится значение даты, и возвращает метку времени для последней миллисекунды этой недели.

Диаграмма функции lunarweekstart(), пример с объектом диаграммы

Диаграмма функции lunarweekstart(), пример с объектом диаграммы

Диаграмма функции lunarweekstart()lunarweekstart(), пример с объектом диаграммы ![Диаграмма, демонстрирующая, как функция lunarweekstart преобразует входную дату каждой транзакции в метку времени первой миллисекунды лунной недели, к которой относится эта дата.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-chart-object.png)

Транзакция 8189 совершена 19 января. Функция lunarweekstart() определяет, что лунная неделя начинается 15 января. Поэтому значение start\_of\_week для этой транзакции возвращает первую миллисекунду этого дня, то есть 15 января в 00:00:00 (12:00:00 AM).

## Пример 5. Сценарий

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор остатков по кредитам, загруженный в таблицу под именем Loans.

* Данные, включая идентификаторы кредитов, остаток на начало недели и простую процентную ставку, взимаемую по каждому кредиту за год.

Конечному пользователю требуется объект диаграммы, который будет отображать по идентификатору кредита текущий процент, начисленный по каждому кредиту в течение недели до текущей даты.

Скрипт загрузки

```
Loans:
Load
*
Inline 
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

Результаты

Выполните следующие действия.

1. Загрузите данные и откройте лист. Создайте новую таблицу.

2. Добавьте следующие поля как измерения:

   * loan\_id

   * start\_balance

3. Затем, чтобы рассчитать накопленный процент, создайте следующую меру:

   =start\_balance\*(rate\*(today(1)-lunarweekstart(today(1)))/365)

4. Задайте параметру меры Формат чисел значение Денежный.

Результирующая таблица

| loan\_id | start\_balance | =начальный\_баланс\*(ставка\*(сегодня(1)- началолуннойнедели (сегодня(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $15.07 |
| 8189 | $15000.00 | $128.84 |
| 8190 | $17500.00 | $63.29 |
| 8191 | $21000.00 | $107.59 |
| 8192 | $90000.00 | $1139.18 |

Используя сегодняшнюю дату в качестве единственного аргумента, функция lunarweekstart() возвращает дату начала текущего года. Вычитая этот результат из текущей даты, выражение возвращает количество дней, прошедших до сих пор в течение этой недели.

Затем это значение умножается на процентную ставку и делится на 365, чтобы получить эффективную процентную ставку начисленную за этот период. После этого результат умножается на начальный остаток кредита, чтобы вернуть проценты, начисленные до сих пор в течение этой недели.