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

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

Синтаксис:

InLunarWeek (timestamp, base\_date, period\_no[, first\_week\_day])

Возвращаемые типы данных: Булево

Примечание к информации

В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.

Функция `inlunarweek()` определяет, на какую лунную неделю выпадает `base_date`. Затем она возвращает булев результат, когда установлено, что каждая метка времени относится к той же лунной неделе, что `base_date`.

Схема функции `inlunarweek()`

Схема функции `inlunarweek()`

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

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

Функция `inlunarweek()` возвращает результат в виде логического значения. Обычно этот тип функции используется в качестве условия в выражении IF. Она возвращает агрегирование или вычисление в зависимости от того, попадает ли проверяемая дата в рассматриваемую лунную неделю.

Например, функцию `inlunarweek()` можно использовать для идентификации всего оборудования, изготовленного в определенную лунную неделю.

Аргументы

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

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

| Пример | Результат |
| --- | --- |
| `inlunarweek('01/12/2013', '01/14/2013',<br>0)` | Возвращает `TRUE`, поскольку значение `timestamp`, 01/12/2013, выпадает на неделю с 01/08/2013 по 01/14/2013. |
| `inlunarweek('01/12/2013', '01/07/2013',<br>0)` | Возвращает `FALSE`, так как `base_date` 01/07/2013 относится к лунной неделе с 01/01/2013 по 01/07/2013. |
| `inlunarweek('01/12/2013', '01/14/2013',<br>-1)` | Возвращает `FALSE`. При указании значения period\_no = -1 происходит сдвиг на одну неделю назад с 01/01/2013 по 01/07/2013. |
| `inlunarweek('01/07/2013', 01/14/2013',<br>-1)` | Возвращает `TRUE`. По сравнению с предыдущим примером `timestamp` выпадает на следующую неделю с учетом сдвига назад |
| `inlunarweek('01/11/2006', '01/08/2006',<br>0, 3)` | Возвращает `FALSE`. При указании значения 3 для `first_week_day` начало года отсчитывается от 01/04/2013. Таким образом, значение `base`\_date выпадает на первую неделю, а значение `timestamp` на неделю с 01/11/2013 по 01/17/2013. |

Функция `inlunarweek()` часто используется в сочетании со следующими функциями:

Связанные функции

| Функция | Взаимодействие |
| --- | --- |
| [lunarweekname — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm) | Эта функция позволяет определить, к какой по порядку лунной неделе года относится входная дата. |

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

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

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

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

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

Обзор

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

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

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

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

Создайте поле `in_lunar_week`, которое определяет, совершены ли транзакции в ту же лунную неделю, к которой относится 10 января.

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

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Результаты

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

* `date`

* `in_lunar_week`

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

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

Функция `inlunarweek()`, базовый пример

Функция `inlunarweek()`, базовый пример

Функция `inlunarweek()`inlunarweek(), базовый пример![Пример использования функции inlunarweek, демонстрирующий диапазон дат, для которого функция возвращает значение TRUE с учетом входных данных.](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-basic-example.png)

Поле `in_lunar_week` создано предшествующим оператором load с использованием функции `inlunarweek()`, для который переданы следующие аргументы:

* Поле `date`

* Жестко закодированная дата, 10 января, в качестве `base_date`

* `period_no` = 0

Так как лунные недели начинаются с 1 января, 10 января попадает в лунную неделю, которая начинается 8 января и заканчивается 14 января. Поэтому все транзакции, которые совершаются между этими числами января будут возвращать булево значение `TRUE`. Это можно проверить в таблице результатов.

## Пример 2. Аргумент period\_no

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

#### Примеры и результаты:

Обзор

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

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

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

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

Однако в этом примере стоит задача создать поле `2_lunar_weeks_later`, которое определяет, совершены ли транзакции через две лунные недели после 10 января.

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

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Результаты

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

* `date`

* `2_lunar_weeks_later`

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

| date | 2\_lunar\_weeks\_later |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | 0 |
| 1/9/2022 | 0 |
| 1/10/2022 | 0 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | -1 |
| 1/23/2022 | -1 |

Функция `inlunarweek()`, пример с аргументом period\_no

Функция `inlunarweek()`, пример с аргументом period\_no

Функция `inlunarweek()`inlunarweek(), пример с аргументом period\_no![Функция inlunarweek, пример с аргументом period_no](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-period-no.png)

Так как в этом примере в качестве аргумента сдвига используется `period_no` = 2, функция `inlunarweek()` определяет неделю, которая начинается 22 января, как лунную неделю, для которой проверяются транзакции. Таким образом, любая транзакция, совершенная в период с 22 по 28 января, возвращает булев результат `TRUE`.

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

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

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

Обзор

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

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

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

* Используется системная переменная `DateFormat` со значением по умолчанию MM/DD/YYYY.

* Аргумент `first_week_day` имеет значение 5. Это задает в качестве начала лунных недель 5 января.

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

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,5) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Результаты

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

* `date`

* `in_lunar_week`

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

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | -1 |
| 1/7/2022 | -1 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

Функция `inlunarweek()` , пример с аргументом first\_week\_day

Функция `inlunarweek()` , пример с аргументом first\_week\_day

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

В этом примере используется аргумент `first_week_date` = 5 в функции `inlunarweek()`, поэтому начало календаря лунных недель сдвигается на 6 января. Таким образом, 10 января выпадает на лунную неделю, которая начинается 6 января и заканчивается 12 января. Любая транзакция, которая совершается между этими датами, возвращает булево значение `TRUE`.

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

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

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

Обзор

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

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

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

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

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

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

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

Transactions:
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Результаты

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

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

= inlunarweek(date,'01/10/2022', 0)

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

| date | =inlunarweek(date,'01/10/2022', 0) |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

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

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

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

Обзор

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

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

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

* Информация, содержащая идентификатор продукта, дату изготовления и себестоимость.

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

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

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

Transactions:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Результаты

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

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

2. Создайте измерение для отображения названий месяцев:

   =lunarweekname(manufacture\_date)

3. Создайте меру, чтобы определить, какие из продуктов дефектные, а какие нет, с использованием функции inlunarweek():

   =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless')

4. Создайте меру для суммирования cost\_price продуктов:

   =sum(cost\_price)

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

6. В области Вид выключите параметр Итоги.

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

| lunarweekname(manufacture\_date) | =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless') | sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | Бездефектный | $125.79 |
| 2022/02 | Дефектный | $316.38 |
| 2022/03 | Бездефектный | $455.75 |
| 2022/04 | Бездефектный | $146.09 |

Функция inlunarweek() возвращает булево значение при проверке дат производства каждого продукта. Для любого продукта, изготовленного в течение лунной недели, к которой относится 10 января, функция inlunarweek() возвращает булево значение TRUE и ставит отметку «Дефектный». Любой продукт, который возвращает значение FALSE, то есть изготовлен в другую неделю, отмечается как «Бездефектный».