# lunarweekname — функция скриптa и диаграммы

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

Синтаксис:

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

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

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

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

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

Функция `lunarweekname()` определяет, к какой лунной неделе относится дата, начиная отсчет недель с 1 января. Затем она возвращает значение, которое включает `year/weekcount`.

Аргументы

| Аргумент | Описание |
| --- | --- |
| date | Дата или метка времени для вычисления. |
| period\_no | period\_no является целым числом или выражением, определяемым по целому числу, где значение 0 означает лунную неделю, содержащую значение, указанное в поле date. Отрицательные значения, заданные в поле period\_no, означают предшествующие лунные недели, положительные — последующие. |
| first\_week\_day | Смещение, которое может быть больше или меньше нуля. Оно изменяет начало года указанным количеством дней и/или десятичных значений. |

## Когда это следует использовать

Функция `lunarweekname()` полезна, когда требуется сравнить агрегации по лунным неделям. Например, с помощью функции можно определить общий объем продаж продуктов по лунной неделе. Лунные недели полезны, когда требуется обеспечить, чтобы все значения в первой неделе года содержали только значения начиная с 1 января.

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

Примеры функции

| Пример | Результат |
| --- | --- |
| `lunarweekname('01/12/2013')` | Возвращает 2006/02. |
| `lunarweekname('01/12/2013', -1)` | Возвращает 2006/01. |
| `lunarweekname('01/12/2013', 0, 1)` | Возвращает 2006/02. |

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе `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/lunarweekname.htm)

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

Обзор

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

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

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

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

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

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

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

Transactions:
    Load
        *,
        lunarweekname(date) as lunar_week_name
        ;
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`

* `lunar_week_name`

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

| date | lunar\_week\_name |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/06 |
| 2/28/2022 | 2022/09 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/19 |
| 5/16/2022 | 2022/20 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/26 |
| 7/9/2022 | 2022/28 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/30 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/31 |
| 8/8/2022 | 2022/32 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/39 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/44 |

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

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

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

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

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

Транзакция 8189 совершена 19 января. Функция `lunarweekname()` определяет, что эта дата попадает в лунную неделю, которая начинается 15 января; это третья лунная неделя года. Поэтому для этой транзакции возвращается значение `lunar_week_name` = 2022/03.

## Пример 2. Дата с аргументом period\_no

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

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

Обзор

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

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

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

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

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

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

Transactions:
    Load
        *,
        lunarweekname(date,-1) as previous_lunar_week_name
        ;
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_name`

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

| date | previous\_lunar\_week\_name |
| --- | --- |
| 1/7/2022 | 2021/52 |
| 1/19/2022 | 2022/02 |
| 2/5/2022 | 2022/05 |
| 2/28/2022 | 2022/08 |
| 3/16/2022 | 2022/10 |
| 4/1/2022 | 2022/12 |
| 5/7/2022 | 2022/18 |
| 5/16/2022 | 2022/19 |
| 6/15/2022 | 2022/23 |
| 6/26/2022 | 2022/25 |
| 7/9/2022 | 2022/27 |
| 7/22/2022 | 2022/28 |
| 7/23/2022 | 2022/29 |
| 7/27/2022 | 2022/29 |
| 8/2/2022 | 2022/30 |
| 8/8/2022 | 2022/31 |
| 8/19/2022 | 2022/32 |
| 9/26/2022 | 2022/38 |
| 10/14/2022 | 2022/40 |
| 10/29/2022 | 2022/43 |

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

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

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

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

Транзакция 8189 совершена 19 января. Функция `lunarweekname()` определяет, что эта транзакция совершена на третьей неделе года, поэтому возвращается год и номер предыдущей недели, 2022/02, для поля `previous_lunar_week_name`.

## Пример 3. Дата с аргументом first\_week\_day

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

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

Обзор

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

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

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

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

Transactions:
    Load
        *,
        lunarweekname(date,0,4) as lunar_week_name
        ;
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`

* `lunar_week_name`

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

| date | lunar\_week\_name |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/05 |
| 2/28/2022 | 2022/08 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/18 |
| 5/16/2022 | 2022/19 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/25 |
| 7/9/2022 | 2022/27 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/29 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/30 |
| 8/8/2022 | 2022/31 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/38 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/43 |

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

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

Диаграмма функции `lunarweekname()`lunarweekname(), пример с аргументом first\_week\_day![Диаграмма, демонстрирующая, как функция lunarweekname преобразует входную дату для каждой транзакции в комбинированное значение, отображающее год и номер лунной недели.](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-examples-first-week-day.png)

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

Транзакция 8188 совершена 7 января. Так как лунные недели начинаются 5 января, функция `lunarweekname()` определяет, что 7 января относится к первой лунной неделе года. Поэтому для этой транзакции возвращается значение `lunar_week_name` = 2022/01.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.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.

Чтобы рассчитать дату начала лунной недели, когда была совершена транзакция, создайте следующую меру:

=lunarweekname(date)

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

| date | =lunarweekname(date) |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/06 |
| 2/28/2022 | 2022/09 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/19 |
| 5/16/2022 | 2022/20 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/26 |
| 7/9/2022 | 2022/28 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/30 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/31 |
| 8/8/2022 | 2022/32 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/39 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/44 |

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

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

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

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

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

Транзакция 8189 совершена 19 января. Функция lunarweekname() определяет, что эта дата попадает в лунную неделю, которая начинается 15 января; это третья лунная неделя года. Таким образом, для транзакции возвращается значение lunar\_week\_name = 2022/03.

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

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

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

Обзор

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

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

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

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

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

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

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

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
];
```

Результаты

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

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

2. Создайте вычисляемое измерение, используя следующее выражение:

   =lunarweekname(date)

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

   =sum(amount)

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

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

| =lunarweekname(date) | sum(amount) |
| --- | --- |
| 2022/01 | $17.17 |
| 2022/03 | $37.23 |
| 2022/06 | $57.42 |
| 2022/09 | $88.27 |
| 2022/11 | $53.80 |
| 2022/13 | $82.06 |
| 2022/19 | $40.39 |
| 2022/20 | $87.21 |
| 2022/24 | $95.93 |
| 2022/26 | $45.89 |
| 2022/28 | $36.23 |
| 2022/29 | $25.66 |
| 2022/30 | $152.75 |
| 2022/31 | $76.11 |
| 2022/32 | $25.12 |
| 2022/33 | $46.23 |
| 2022/39 | $84.21 |
| 2022/41 | $96.24 |
| 2022/44 | $67.67 |