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

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

Синтаксис:

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

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

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

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

Диаграмма функции inquartertodate

Диаграмма функции inquartertodate

Диаграмма функции inquartertodate ![Пример диаграммы диапазона дат, в пределах которого функция inquartertodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inquartertodate-general.png)

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| 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. |

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

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

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

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

| Пример | Результат |
| --- | --- |
| `inquartertodate('01/25/2013', '03/25/2013', 0)` | Возвращает `TRUE`, так как значение`timestamp`, 01/25/2013, попадает в трехмесячный период с 01/01/2013 по 03/25/2013, в который попадает значение `base_date`, 03/25/2013. |
| `inquartertodate('04/26/2013', '03/25/2013', 0)` | Возвращает `FALSE`, так как 04/26/2013 находится за пределами периода, указанного в предыдущем примере. |
| `inquartertodate('02/25/2013', '06/09/2013', -1)` | Возвращает `TRUE`, так как значение `period_no`, -1, сдвигает период поиска назад на один трехмесячный период (один квартал года). Таким образом, период поиска длится с 01/01/2013 по 03/09/2013. |
| `inquartertodate('03/25/2006', '04/15/2006', 0, 2)` | Возвращает `TRUE`, так как значение `first_month_of_year`равно 2, в результате чего период поиска длится с 02/01/2006 по 04/15/2006, а не с 04/01/2006 по 04/15/2006. |

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

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

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

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

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

Обзор

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

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

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

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

* Создание поля `  in_quarter_to_date `, которое определяет, какие транзакции совершены в квартале до 15 мая 2022 года.

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

```
SET DateFormat='MM/DD/YYYY';
						
Transactions:
    Load
        *,
        inquartertodate(date,'05/15/2022', 0) as in_quarter_to_date
        ;
Load
*
Inline
[
id,date,amount
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
];
```

Результаты

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

* `date`

* `in_quarter_to_date`

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

| date | в\_квартале\_по\_текущую\_дату |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/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 |

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

Диаграмма функции inquartertodate без дополнительных аргументов

Диаграмма функции inquartertodate без дополнительных аргументов

Диаграмма функции inquartertodate без дополнительных аргументов ![Диаграмма диапазона дат, в пределах которого функция inquartertodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inquartertodate-example-no-additional-arguments.png)

Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат `TRUE`. Для транзакций с датами от 16 мая и позже возвращается `FALSE`, как и для транзакций до 1 апреля.

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

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

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

Обзор

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

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

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

* Создание поля `previous_qtr_to_date`, которое определяет, какие транзакции совершены в течение полного квартала до 15 мая 2022 года.

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

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

Transactions:
    Load
        *,
        inquartertodate(date,'05/15/2022', -1) as previous_qtr_to_date
        ;
Load
*
Inline
[
id,date,amount
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
];
```

Результаты

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

* `date`

* `previous_qtr_to_date`

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

| date | предыдущий\_квартал\_по\_текущую\_дату |
| --- | --- |
| 1/7/2022 | -1 |
| 1/19/2022 | -1 |
| 2/5/2022 | -1 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/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 |

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

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

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

Диаграмма функции inquartertodate, пример с аргументом period\_no ![Диаграмма диапазона дат, в пределах которого функция inquartertodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inquartertodate-example-period-no.png)

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

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

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

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

Обзор

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

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

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

* Создание поля `in_quarter_to_date`, которое определяет, какие транзакции совершены в том же квартале до 15 мая 2022 года.

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

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

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

Transactions:
    Load
        *,
        inquartertodate(date,'05/15/2022', 0,3) as in_quarter_to_date
        ;
Load
*
Inline
[
id,date,amount
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
];
```

Результаты

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

* `date`

* `in_quarter_to_date`

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

| date | в\_квартале\_по\_текущую\_дату |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | -1 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/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 |

Так как используется 3 в качестве аргумента [`first_month_of_year` в функции `inquartertodate()`, функция начинает год 1 марта, а затем делит год на кварталы. Следовательно, имеются следующие квартальные сегменты:

* с марта по май

* с июня по август

* с сентября по ноябрь

* с декабря по февраль

`base_date` от 15 мая затем сегментирует квартал с марта по май, устанавливая для него конечную границу 15 мая.

Диаграмма функции inquartertodate, пример с аргументом first\_month\_of\_year

Диаграмма функции inquartertodate, пример с аргументом first\_month\_of\_year

Диаграмма функции inquartertodate, пример с аргументом first\_month\_of\_year ![Диаграмма диапазона дат, в пределах которого функция inquartertodate будет возвращать значение TRUE.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inquartertodate-example-first-mth-yr.png)

Таким образом, для любой транзакции, совершенной между 1 марта и 15 мая, возвращается булев результат `TRUE`, а для транзакций с датами вне этих границ — значение `FALSE`.

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

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

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

Обзор

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

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

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

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

Transactions:
Load
*
Inline
[
id,date,amount
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
];
```

Результаты

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

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

=inquartertodate(date,'05/15/2022', 0)

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

| date | =вкварталепотекущуюдату(date,'05/15/2022', 0) |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/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 |

Мера in\_quarter\_to\_date создается в объекте диаграммы с помощью функции inquartertodate(). Первый аргумент — это оцениваемое поле даты. Второй аргумент — это жестко закодированная дата «15 мая», которая представляет собой base\_date, определяющий, какой квартал сегментировать, и определяющий конечную границу этого сегмента. period\_no = 0 — это последний аргумент, означающий, что функция не сравнивает кварталы, предшествующие или следующие за сегментированным кварталом.

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

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

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

Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат TRUE. Для транзакций с датами от 16 мая и позже возвращается FALSE, как и для транзакций до 1 апреля.

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

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

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

Обзор

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

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

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

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

15 мая 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
];
```

Результаты

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

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

   =quartername(manufacture\_date)

2. Затем создайте измерение, чтобы определить, какие из продуктов дефектные, а какие нет:

   =if(inquartertodate(manufacture\_date,makedate(2022,05,15),0),'Defective','Faultless')

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

   =sum(cost\_price)

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

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

| названиеквартала(дата\_производства) | if(inquartertodate(manufacture\_date,makedate(2022,05,15),0),'Дефектный','Бездефектный') | Sum(cost\_price) |
| --- | --- | --- |
| Jan-Mar 2022 | Бездефектный | $253.89 |
| Apr-Jun 2022 | Бездефектный | $229.03 |
| Apr-Jun 2022 | Дефектный | $122.45 |
| Jul-Sep 2022 | Бездефектный | $446.31 |
| Oct-Dec 2022 | Бездефектный | $163.91 |

Функция inquartertodate() возвращает булево значение при проверке дат производства каждого продукта. Продукты, для которых возвращается булево значение TRUE, помечаются как ‘Defective’. Продукты, для которых возвращается значение FALSE и которые, следовательно, не произведены в квартале до 15 мая включительно, помечаются как ‘Faultless’.