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

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

Синтаксис:

InYear (timestamp, base\_date, period\_no [, first\_month\_of\_year])

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

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

Диаграмма диапазона функции `inyear()`

Диаграмма диапазона функции `inyear()`

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

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

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

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата, которую необходимо сравнить со значением, указанным в поле base\_date. |
| base\_date | Дата, использующаяся для оценки года. |
| period\_no | Год можно сместить, задав значение в поле 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` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. раздел [Изменение региональных настроек для приложений и скриптов](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).

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

| Пример | Результат |
| --- | --- |
| `inyear ('01/25/2013', '01/01/2013', 0 )` | Возвращает TRUE |
| `inyear ('01/25/2012', '01/01/2013', 0)` | Возвращает FALSE |
| `inyear ('01/25/2013', '01/01/2013', -1)` | Возвращает FALSE |
| `inyear ('01/25/2012', '01/01/2013', -1 )` | Возвращает TRUE |
| `inyear ('01/25/2013', '01/01/2013', 0, 3)` | Возвращает TRUE<br><br>Значения `base_date` и `first_month_of_year` указывают, что метка времени должна попадать в период с 01/03/2012 по 02/28/2013 |
| `inyear ('03/25/2013', '07/01/2013', 0, 3 )` | Возвращает TRUE |

## Пример 1. Базовый пример

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

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

Обзор

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

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

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

* Предшествующая загрузка с функцией `inyear()`, которая задана в качестве поля `in_year` и определяет, какие транзакции совершены в том же году, к которому относится 26 июля 2021 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', 0) as in_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

Результаты

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

* `date`
* `in_year`

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

| date | in\_year |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

Поле `in_year` создано в предыдущем операторе load с помощью функции `inyear()`. Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата 26 июля 2021 года, которая представляет собой `base_date`, определяющий сравниваемый год. `period_no`= `0` — это последний аргумент, означающий, что функция `inyear()` не сравнивает годы, которые следуют до или после рассматриваемого года.

Диаграмма диапазона функции `inyear()` с базовой датой 26 июля

Диаграмма диапазона функции `inyear()` с базовой датой 26 июля

Диаграмма диапазона функции `inyear()`inyear() с базовой датой 26 июля ![Диаграмма функции inyear() с базовой датой 26 июля и выделенным диапазоном с 1 января 2021 года по 1 января 2022 года.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-examples1_and4-diagram.png)

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

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

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

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

Обзор

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

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

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

* Предыдущая загрузка с функцией `inyear()`, которая задана в качестве поля `previous_year` и определяет, какие транзакции совершены за 12 месяцев до года, к которому относится 26 июля 2021 года.

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

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', -1) as previous_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

Результаты

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

* `date`
* `previous_year`

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

| date | previous\_year |
| --- | --- |
| 01/13/2020 | -1 |
| 02/26/2020 | -1 |
| 03/27/2020 | -1 |
| 04/16/2020 | -1 |
| 05/21/2020 | -1 |
| 08/14/2020 | -1 |
| 10/07/2020 | -1 |
| 12/05/2020 | -1 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | 0 |
| 04/23/2021 | 0 |
| 05/04/2021 | 0 |
| 06/30/2021 | 0 |
| 07/26/2021 | 0 |
| 12/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

При использовании `-1` в качестве аргумента `period_no` функции `inyear()` границы сравниваемого года сдвигаются на полный год назад. Сначала в качестве сравниваемого года был определен 2021 год. `period_no` сдвигает сравниваемый год на один, теперь это 2020 год.

Диаграмма диапазона функции `inyear()` с аргументом period\_no = `-1`

Диаграмма диапазона функции `inyear()` с аргументом period\_no = `-1`

Диаграмма диапазона функции `inyear()`inyear() с аргументом period\_no = `-1`-1 ![Диаграмма функции inyear() с базовой датой 26 июля и аргументом period_no = -1.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-example2-diagram.png)

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

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

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

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

Обзор

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

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

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

* Предыдущая загрузка с функцией `inyear()`, которая задана в качестве поля `in_year` и определяет, какие транзакции совершены в том же году, к которому относится 26 июля 2021 года.

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

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

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', 0, 3) as in_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

Результаты

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

* `date`
* `in_year`

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

| date | in\_year |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

При использовании `3` в качестве аргумента `first_month_of_year` функции `inyear()` год начинается с 1 марта и заканчивается в последний день февраля.

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

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

Диаграмма диапазона функции `inyear()`inyear(), где в качестве первого месяца года задан март. ![Диаграмма функции inyear() с базовой датой 26 июля, где в качестве первого месяца года задан март.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-example3-diagram.png)

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

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

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

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

Обзор

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

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

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

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

Результаты

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

* `date`

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

* `=inyear(date,'07/26/2021', 0)`

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

| date | =inyear(date,'07/26/2021',0) |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

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

Диаграмма диапазона функции `inyear()` с базовой датой 27 июля

Диаграмма диапазона функции `inyear()` с базовой датой 27 июля

Диаграмма диапазона функции `inyear()`inyear() с базовой датой 27 июля ![Диаграмма функции inyear() с базовой датой 27 июля и выделенным диапазоном с 1 января 2021 года по 1 января 2022 года.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-examples1_and4-diagram.png)

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

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

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

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

Обзор

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

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

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

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

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

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

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

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

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

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

```
Products: 
Load 
* 
Inline  
[ 
product_id,product_type,manufacture_date,cost_price 
8188,product A,'01/13/2020',37.23 
8189,product B,'02/26/2020',17.17 
8190,product B,'03/27/2020',88.27 
8191,product C,'04/16/2020',57.42 
8192,product D,'05/21/2020',53.80 
8193,product D,'08/14/2020',82.06 
8194,product C,'10/07/2020',40.39 
8195,product B,'12/05/2020',87.21
8196,product A,'01/22/2021',95.93 
8197,product B,'02/03/2021',45.89 
8198,product C,'03/17/2021',36.23 
8199,product C,'04/23/2021',25.66
8200,product B,'05/04/2021',82.77 
8201,product D,'06/30/2021',69.98 
8202,product D,'07/26/2021',76.11 
8203,product D,'12/27/2021',25.12 
8204,product C,'06/06/2022',46.23 
8205,product C,'07/18/2022',84.21 
8206,product A,'11/14/2022',96.24 
8207,product B,'12/12/2022',67.67 
]; 
```

Результаты

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

* product\_type

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

* =sum(if(InYear(manufacture\_date,makedate(2021,01,01),0),cost\_price,0))

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

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

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

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

| тип\_продукта | =sum(if(InYear(manufacture\_date,makedate(2021,01,01),0),cost\_price,0)) |
| --- | --- |
| Продукт A | $95.93 |
| Продукт B | $128.66 |
| Продукт C | $61.89 |
| Продукт D | $171.21 |

Функция inyear() возвращает булево значение при проверке дат производства каждого продукта. Для любого продукта, изготовленного в 2021 году, функция inyear() возвращает булево значение TRUE и сумму cost\_price.