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

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

InMonths(n\_months, timestamp, base\_date, period\_no [, first\_month\_of\_year])

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

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

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

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

Схема функции `inmonths()`inmonths(). ![Diagram that shows the range of time in which the inmonths() function will evaluate a base date as true or false.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

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

В качестве аргументов `n_month` в функции доступны следующие отрезки года.

`n_month`n\_monthАргументы

| Период | Количество месяцев |
| --- | --- |
| месяц | 1 |
| два месяца | 2 |
| квартал | 3 |
| четыре месяца | 4 |
| полгода | 6 |

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

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

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

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| n\_months | Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четыре месяца) или 6 (полугодие). |
| timestamp | Дата, которую необходимо сравнить со значением, указанным в поле base\_date. |
| base\_date | Дата, использующаяся для оценки периода. |
| period\_no | Период можно сместить, задав значение в поле period\_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base\_date. Отрицательные значения, заданные в поле period\_no, означают предшествующие периоды, положительные — последующие. |
| first\_month\_of\_year | Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first\_month\_of\_year. |

Можно использовать следующие значения, чтобы задать первый месяц года в аргументе `first_month_of_year`:

значения first\_month\_of\_year

| Месяц | значение |
| --- | --- |
| Февраль | 2 |
| Март | 3 |
| Апрель | 4 |
| May | 5 |
| Июнь | 6 |
| Июль | 7 |
| Август | 8 |
| Сентябрь | 9 |
| Октябрь | 10 |
| Ноябрь | 11 |
| Декабрь | 12 |

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

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

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

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

| Пример | Результат |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | Возвращает TRUE. Поскольку значение timestamp, 01/25/2013, находится в четырехмесячном периоде с 01/01/2013 по 04/30/2013, в котором находится значение `base_date`, 04/25/2013. |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | Возвращает FALSE. Поскольку 05/25/2013 находится за пределами периода, указанного в предыдущем примере. |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | Возвращает TRUE. Поскольку значение `period_no`, `-1`, сдвигает период поиска на один период из четырех месяцев назад (значение n-months), вследствие чего период поиска будет составлять промежуток с 09/01/2012 по 12/31/2012. |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | Возвращает TRUE. Возвращает `first_month_of_year`, так как значение равно `3`, в результате чего период поиска длится с 03/01/2006 по 07/30/2006, а не с 01/01/2006 по 04/30/2006. |

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

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

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

Обзор

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

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

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

* Предыдущая загрузка с дополнительной переменной ‘`in_months`’, которая определяет, совершены ли транзакции в том же квартале, к которому относится 15 мая 2022 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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`
* `in_months`

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

| Дата | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 7.03.2022 | 0 |
| 30.03.2022 | 0 |
| 4/5/2022 | -1 |
| 16.04.2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

«`in_months`» поле создано в предшествующем операторе load с помощью функции `inmonths()`." Первым предоставлен аргумент `3`, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. В данном примере это поле даты. Третий аргумент — это жестко закодированная дата 15 мая, которая является `base_date`, а `period_no` = `0` является заключительным аргументом.

Диаграмма функции `inmonths()` с квартальными сегментами.

Диаграмма функции `inmonths()` с квартальными сегментами.

Диаграмма функции `inmonths()`inmonths() с квартальными сегментами. ![Diagram that shows the range of time the inmonths() function evaluates with May 15 as the base date, and the year divided into quarter segments.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Май попадает во второй квартал года. Поэтому все транзакции, которые совершаются с 1 апреля по 30 июня будут возвращать булев результат TRUE. Это можно проверить в таблице результатов.

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

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

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

Обзор

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

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

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

* Предыдущая загрузка с дополнительной переменной '`previous_quarter`', которая определяет, совершены ли транзакции в квартале до 15 мая 2022 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', -1) as previous_quarter 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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_quarter`

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

| Дата | revious quarter |
| --- | --- |
| 2/19/2022 | -1 |
| 7.03.2022 | -1 |
| 30.03.2022 | -1 |
| 4/5/2022 | 0 |
| 16.04.2022 | 0 |
| 5/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/22/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Функция оценивает, совершены ли транзакции в первый квартал года, используя `-1` в качестве аргумента `period_no` в функции `inmonths()`. 15 мая является `base_date` и попадает во второй квартал года (апрель-июнь).

Диаграмма функции `inmonths()` с квартальными сегментами и `period_no`, установленным на `-1`

Диаграмма функции `inmonths()` с квартальными сегментами и `period_no`, установленным на `-1`

Диаграмма функции `inmonths()`inmonths() с квартальными сегментами и `period_no`period\_no, установленным на `-1`-1 ![Diagram that shows the range of time the inmonths() function evaluates with May 15 as the base date, the year divided into quarter segments, and the period_no set -1 which sets the range of time back by one quarter.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

Таким образом, любая транзакция, совершенная в период с января по март, возвращает булев результат TRUE.

## Пример 3. Аргумент first\_month\_of\_year

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

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

Обзор

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

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

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

* Предыдущая загрузка с дополнительной переменной '`in_months`', которая определяет, совершены ли транзакции в том же квартале, к которому относится 15 мая 2022 года.

В этом примере политика организации устанавливает март в качестве первого месяца финансового года.

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0, 3) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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`
* `in_months`

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

| Дата | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 7.03.2022 | -1 |
| 30.03.2022 | -1 |
| 4/5/2022 | -1 |
| 16.04.2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

При использовании `3` в качестве `first_month_of_year` аргумента в функции `inmonths()`, функция начинает год с 1 марта. Функция `inmonths()` затем делит год на кварталы: Mar-May (март-май), Jun-Aug (июнь-август), Sep-Nov (сентябрь-ноябрь), Dec-Feb (декабрь-февраль). Таким образом, 15 мая попадает в первый квартал года (март-май).

Диаграмма функции `inmonths()`, где в качестве первого месяца года задан март.

Диаграмма функции `inmonths()`, где в качестве первого месяца года задан март.

Диаграмма функции `inmonths()`inmonths(), где в качестве первого месяца года задан март. ![Diagram that shows the range of time the inmonths() function evaluates with May 15 as the base date, the year divided into quarter segments, and March set as the first month of the year.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

Любая транзакция, совершенная в эти месяцы, будет возвращать булев результат TRUE.

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

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

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

Обзор

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

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

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

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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`

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

`=inmonths(3,date,'05/15/2022', 0)`

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

| date | =inmonths(3,date,'05/15/2022', 0) |
| --- | --- |
| 2/19/2022 | 0 |
| 7.03.2022 | 0 |
| 30.03.2022 | 0 |
| 4/5/2022 | -1 |
| 16.04.2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Поле `in_months` создается в диаграмме с помощью функции `inmonths()`. Первым предоставлен аргумент `3`, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. В данном примере это поле даты. Третий аргумент — это жестко закодированная дата 15 мая, которая является `base_date`, а `period_no` = `0` является заключительным аргументом.

Диаграмма функции `inmonths()` с квартальными сегментами.

Диаграмма функции `inmonths()` с квартальными сегментами.

Диаграмма функции `inmonths()`inmonths() с квартальными сегментами. ![Diagram that shows the range of time the inmonths() function evaluates with May 15 as the base date, and the year divided into quarter segments.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Май попадает во второй квартал года. Поэтому все транзакции, которые совершаются с 1 апреля по 30 июня будут возвращать булев результат TRUE. Это можно проверить в таблице результатов.

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

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

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

Обзор

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

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

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

* Данная таблица содержит следующие поля:

  * product ID (ИД продукта)

  * product type (тип продукта)

  * manufacture date (дата изготовления)

  * cost price (себестоимость)

Конечному пользователю нужна диаграмма, отображающая по типу продукта стоимость продуктов, произведенных в первом сегмента 2021 года. Пользователю требуется возможность определить продолжительность этого сегмента.

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

```
SET vPeriod = 1; 

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

Результаты

Загрузите данные и откройте лист.

В начале скрипта загрузки создана переменная vPeriod, которая будет привязана к элементу управления вводом переменной.

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

1. На панели ресурсов щелкните Диаграммы.

2. В разделе Объекты панели мониторинга перетащите Ввод переменной на лист.

3. Введите заголовок для объекта диаграммы.

4. В разделе Переменная выберите vPeriod в качестве имени и задайте для отображения объект Раскрывающийся список.

5. В списке Значения выберите Динамическое. Введите следующее:

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Добавьте на лист новую таблицу.

7. На панели свойств в разделе Данные добавьте измерение product\_type.

8. Добавьте следующее выражение в качестве меры:

   =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

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

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

| product\_type | =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0)) |
| --- | --- |
| Продукт A | $88.27 |
| Продукт B | $37.23 |
| Продукт C | $17.17 |
| Продукт D | $0.00 |

Функция inmonths() использует пользовательский ввод в качестве аргумента для определения размера начального сегмента года. Функция передает дату изготовления каждого продукта в качестве второго аргумента функции inmonths(). Так как 1 января используется в качестве третьего аргумента функции inmonths(), продукты, дата изготовления которых попадает в начальный сегмент года, возвращают булево значение TRUE и поэтому функция sum будет суммировать стоимость этих продуктов.