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

Эта функция возвращает значение True, если поле timestamp находится в пределах месяца, включающего значение, указанное в поле base\_date.

Синтаксис:

InMonth (timestamp, base\_date, period\_no)

Схема функции `indaytotime`.

Схема функции `indaytotime`.

Схема функции `indaytotime`indaytotime. ![Диаграмма, показывающая условия функции inmonth.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/dr_Diagram_InMonth.png)

Другими словами, функция `inmonth()` определяет, попадает ли набор дат в этот месяц, и возвращает булево значение на основе `base_date`, которое идентифицирует месяц.

Когда использовать inmonth

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

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

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

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| метка времени | Дата, которую необходимо сравнить со значением, указанным в поле `base_date`. |
| base\_date | Дата, использующаяся для оценки месяца. Важно отметить, что `base_date` может быть любым днем в течение месяца. |
| period\_no | Месяц можно сместить, задав значение в поле `period_no`. `period_no` — целое число, где 0 обозначает месяц, включающий значение, указанное в поле `base_date`. Отрицательные значения, заданные в поле `period_no`, означают предшествующие месяцы, положительные — последующие. |

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. раздел [Изменение региональных настроек для приложений и скриптов](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

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

Если вы — разработчик приложений, то можете задать регион по умолчанию для создаваемых приложений. Для получения дополнительной информации см. раздел [Установка предпочтительных региональных настроек для создания приложений и скриптов в Аналитика Qlik Cloud](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

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

| Пример | Результат |
| --- | --- |
| ` inmonth ('25/01/2013', '01/01/2013', 0)  ` | Возвращает True |
| `inmonth('25/01/2013', '23/04/2013', 0)` | Возвращает False |
| ` inmonth ('25/01/2013', '01/01/2013', -1)  ` | Возвращает False |
| ` inmonth ('25/12/2012', '17/01/2013', -1)  ` | Возвращает True |

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

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

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

Обзор

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

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

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

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

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

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

Transactions: 
  Load 
    *, 
    inmonth(date,'04/01/2022', 0) as in_month 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77 
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

Результаты

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

* `date`
* `in_month`

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

| date | in\_month |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | 0 |
| 2/2/2022 | 0 |
| 2/20/2022 | 0 |
| 4/11/2022 | -1 |
| 4/13/2022 | -1 |
| 4/15/2022 | -1 |
| 4/25/2022 | -1 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

Поле `in_month` создано предшествующим оператором load с использованием функции `inmonth()`, где в качестве аргументов функции переданы поле даты, жестко запрограммированная метка времени «1 апреля» в качестве `base_date` и `period_no` = `0`.

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

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

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

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

Обзор

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

Однако в этом примере вы создадите поле `2_months_prior`, которое определяет, были ли транзакции совершены за два месяца до апреля.

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

```
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
Load 
   *, 
   inmonth(date,'04/01/2022', -2) as [2_months_prior] 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

Результаты

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

* `date`
* `2_months_prior`

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

| date | 2\_months\_prior |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | -1 |
| 2/2/2022 | -1 |
| 2/20/2022 | -1 |
| 4/11/2022 | 0 |
| 4/13/2022 | 0 |
| 4/15/2022 | 0 |
| 4/25/2022 | 0 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

Использование -2 в качестве аргумента `period_no` в функции `inmonth()` сдвигает месяц, определенный аргументом `base_date`, на два месяца ранее. В этом примере он изменяет заданный месяц с апреля на февраль.

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

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

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

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

Обзор

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

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

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

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

Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77 
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

Объект диаграммы

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

`date`

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

`=inmonth(date,'04/01/2022', 0)`

Результаты

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

| date | =inmonth(date,'04/01/2022', 0) |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | 0 |
| 2/2/2022 | 0 |
| 2/20/2022 | 0 |
| 4/11/2022 | -1 |
| 4/13/2022 | -1 |
| 4/15/2022 | -1 |
| 4/25/2022 | -1 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

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

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

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

Обзор

В этом примере набор данных загружается в таблицу под именем `Products`. Данная таблица содержит следующие поля:

* ИД продукта

* Время изготовления

* Себестоимость

Из-за ошибки оборудования продукты, произведенные в июле 2022 года, оказались бракованными. Проблема была решена 27 июля 2022 года.

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

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

```
Products: 
Load 
* 
Inline  
[ 
product_id,manufacture_date,cost_price 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
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 
]; 
```

Результаты

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

`=monthname(manufacture_date)`

Создайте следующие меры:

* `=sum(cost_price)`

* `=if(only(inmonth(manufacture_date,makedate(2022,07,01),0)),'Defective','Faultless')`

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

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

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

| monthname(manufacture\_date) | =if(only(inmonth(manufacture\_date,makedate(2022,07,01),0)),'Defective','Faultless') | sum(cost\_price) |
| --- | --- | --- |
| Янв 2022 | Бездефектный | $54.40 |
| Фев 2022 | Бездефектный | $145.69 |
| Мар 2022 | Бездефектный | $53.80 |
| Апр 2022 | Бездефектный | $82.06 |
| Май 2022 | Бездефектный | $127.60 |
| Июн 2022 | Бездефектный | $141.82 |
| Июл 2022 | Дефектный | $214.64 |
| Авг 2022 | Бездефектный | $147.46 |
| Сен 2022 | Бездефектный | $84.21 |
| Окт 2022 | Бездефектный | $163.91 |

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