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

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

Синтаксис:

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

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

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

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

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

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

Функция `inweek()` использует аргумент `base_date` для определения того, в какой семидневный период попадает дата. Начало недели определяется системной переменной `FirstWeekDay`. Однако также можно изменить первый день недели, используя аргумент `first_week_day` в функции `inweek()`.

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

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

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

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

Аргументы

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

значения first\_week\_day

| День | Величина |
| --- | --- |
| Понедельник | 0 |
| Вторник | 1 |
| Среда | 2 |
| Четверг | 3 |
| Пятница | 4 |
| Суббота | 5 |
| Воскресенье | 6 |

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

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

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

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

| Пример | Результат |
| --- | --- |
| ` inweek ('01/12/2006', '01/14/2006', 0)  ` | Возвращает TRUE |
| ` inweek ('01/12/2006', '01/20/2006', 0 )  ` | Возвращает FALSE |
| ` inweek ('01/12/2006', '01/14/2006', -1 )  ` | Возвращает FALSE |
| ` inweek ('01/07/2006', '01/14/2006', -1)  ` | Возвращает TRUE |
| ` inweek ('01/12/2006', '01/09/2006', 0, 3)  ` | Возвращает FALSE, поскольку для аргумента `first_week_day` указано значение 3 (четверг), в результате чего 01/12/2006 становится первым днем недели после недели, содержащей дату 01/09/2006. |

Эти темы помогут вам в работе с этой функцией:

Связанные темы

| Тема | Флаг по умолчанию / значение | Описание |
| --- | --- | --- |
| [FirstWeekDay](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) | 6 / воскресенье | Определяет день начала каждой недели. |

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

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

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

Обзор

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

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

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

* Системная переменная `FirstWeekDay`, для которой задано значение `6` (воскресенье).

* Предшествующая загрузка, которая содержит следующее:

  * Функция `inweek()`, которая задана как поле `in_week` и определяет, какие транзакции совершены в течение недели, к которой относится 14 января 2022 года.

  * Функция `weekday()`, которая задана как поле `week_day` и показывает, какой день недели соответствует каждой дате.

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

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
       weekday(date) as week_day, 
       inweek(date,'01/14/2022', 0) as in_week 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

Результаты

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

* `date`
* `week_day`
* `in_week`

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

| date | week\_day | на неделе |
| --- | --- | --- |
| 01/02/2022 | Sun | 0 |
| 01/05/2022 | Wed | 0 |
| 01/06/2022 | Thu | 0 |
| 01/08/2022 | Sat | 0 |
| 01/09/2022 | Sun | -1 |
| 01/10/2022 | Mon | -1 |
| 01/11/2022 | Tue | -1 |
| 01/12/2022 | Wed | -1 |
| 01/13/2022 | Thu | -1 |
| 01/14/2022 | Fri | -1 |
| 01/15/2022 | Sat | -1 |
| 01/16/2022 | Sun | 0 |
| 01/17/2022 | Mon | 0 |
| 01/18/2022 | Tue | 0 |
| 26.01.2022 | Wed | 0 |
| 27.01.2022 | Thu | 0 |
| 01/28/2022 | Fri | 0 |
| 01/29/2022 | Sat | 0 |
| 30.01.2022 | Sun | 0 |
| 01/31/2022 | Mon | 0 |

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

Системная переменная `FirstWeekDay` определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 15 января будут действительным периодом для расчета `inweek()`:

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`inweek() ![Диаграмма календаря, демонстрирующая месяц, в котором числа с 9 по 15 выделены зеленым. 9-е число — это воскресенье, а 15-е — суббота.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example1-diagram.png)

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

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

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

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

Обзор

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

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

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

* Системная переменная `FirstWeekDay`, для которой задано значение `6` (воскресенье).

* Предыдущая загрузка, которая содержит следующее:

  * Функция `inweek ()`, которая задана как поле `prev_week` и определяет, какие транзакции совершены за неделю до недели, к которой относится 14 января 2022 года.

  * Функция `weekday()`, которая задана как поле `week_day` и показывает, какой день недели соответствует каждой дате.

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

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
	weekday(date) as week_day, 
	inweek(date,'01/14/2022', -1) as prev_week  
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

Результаты

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

* `date`
* `week_day`
* `prev_week`

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

| date | week\_day | Предыдущая неделя |
| --- | --- | --- |
| 01/02/2022 | Sun | -1 |
| 01/05/2022 | Wed | -1 |
| 01/06/2022 | Thu | -1 |
| 01/08/2022 | Sat | -1 |
| 01/09/2022 | Sun | 0 |
| 01/10/2022 | Mon | 0 |
| 01/11/2022 | Tue | 0 |
| 01/12/2022 | Wed | 0 |
| 01/13/2022 | Thu | 0 |
| 01/14/2022 | Fri | 0 |
| 01/15/2022 | Sat | 0 |
| 01/16/2022 | Sun | 0 |
| 01/17/2022 | Mon | 0 |
| 01/18/2022 | Tue | 0 |
| 26.01.2022 | Wed | 0 |
| 27.01.2022 | Thu | 0 |
| 01/28/2022 | Fri | 0 |
| 01/29/2022 | Sat | 0 |
| 30.01.2022 | Sun | 0 |
| 01/31/2022 | Mon | 0 |

Используя `-1` в качестве аргумента `period_no`, функция `inweek()` сдвигает границы сравниваемой недели на семь дней назад. При `period_no` = `0` границами недели являются 9 и 15 января. Но в этом примере `period_no` = `-1` сдвигает начальную и конечную границы этого сегмента на одну неделю назад. Границы диапазона дат переносятся на 2 и 8 января.

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`inweek() ![Диаграмма календаря, демонстрирующая месяц, в котором числа с 2 по 8 выделены зеленым. 2-е число — это воскресенье, а 8-е — суббота.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example2-diagram.png)

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

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

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

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

Обзор

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

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

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

* Системная переменная `FirstWeekDay`, для которой задано значение `6` (воскресенье).

* Предыдущая загрузка, которая содержит следующее:

  * Функция `inweek()`, которая задана как поле `in_week` и определяет, какие транзакции совершены в течение недели, к которой относится 14 января 2022 года.

  * Функция `weekday()`, которая задана как поле `week_day` и показывает, какой день недели соответствует каждой дате.

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

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
	weekday(date) as week_day, 
	inweek(date,'01/14/2022', 0, 0) as in_week 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

Результаты

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

* `date`
* `week_day`
* `in_week`

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

| date | week\_day | на неделе |
| --- | --- | --- |
| 01/02/2022 | Sun | 0 |
| 01/05/2022 | Wed | 0 |
| 01/06/2022 | Thu | 0 |
| 01/08/2022 | Sat | 0 |
| 01/09/2022 | Sun | 0 |
| 01/10/2022 | Mon | -1 |
| 01/11/2022 | Tue | -1 |
| 01/12/2022 | Wed | -1 |
| 01/13/2022 | Thu | -1 |
| 01/14/2022 | Fri | -1 |
| 01/15/2022 | Sat | -1 |
| 01/16/2022 | Sun | -1 |
| 01/17/2022 | Mon | 0 |
| 01/18/2022 | Tue | 0 |
| 26.01.2022 | Wed | 0 |
| 27.01.2022 | Thu | 0 |
| 01/28/2022 | Fri | 0 |
| 01/29/2022 | Sat | 0 |
| 30.01.2022 | Sun | 0 |
| 01/31/2022 | Mon | 0 |

Использование `0` в качестве аргумента в функции `first_week_day` аргумент функции `inweek()` заменяет системную переменную `FirstWeekDay` и устанавливает понедельник в качестве первого дня недели.

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`inweek() ![Диаграмма календаря, демонстрирующая месяц, в котором числа с 10 по 16 выделены зеленым. 10-е число — это понедельник, а 16-е — воскресенье.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example3-diagram.png)

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

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

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

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

Обзор

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

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

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

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

Результаты

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

* `date`

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

* `=inweek (date,'01/14/2022',0)`, чтобы вычислить, какие транзакции совершены в течение недели, к которой относится 14 января.

* `=weekday(date)`, чтобы показать, какой день недели соответствует каждой дате.

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

| date | week\_day | =inweek (date,'01/14/2022',0) |
| --- | --- | --- |
| 01/02/2022 | Sun | 0 |
| 01/05/2022 | Wed | 0 |
| 01/06/2022 | Thu | 0 |
| 01/08/2022 | Sat | 0 |
| 01/09/2022 | Sun | -1 |
| 01/10/2022 | Mon | -1 |
| 01/11/2022 | Tue | -1 |
| 01/12/2022 | Wed | -1 |
| 01/13/2022 | Thu | -1 |
| 01/14/2022 | Fri | -1 |
| 01/15/2022 | Sat | -1 |
| 01/16/2022 | Sun | 0 |
| 01/17/2022 | Mon | 0 |
| 01/18/2022 | Tue | 0 |
| 26.01.2022 | Wed | 0 |
| 27.01.2022 | Thu | 0 |
| 01/28/2022 | Fri | 0 |
| 01/29/2022 | Sat | 0 |
| 30.01.2022 | Sun | 0 |
| 01/31/2022 | Mon | 0 |

Мера `in_week` создается в диаграмме с помощью функции `inweek()`. Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата 14 января, которая выступает в роли `base_date`. Аргумент `base_date` работает с системной переменной `FirstWeekDay` для идентификации сравниваемой недели. Заключительный аргумент — `period_no` = `0`.

Системная переменная `FirstWeekDay` определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 15 января будут действительным периодом для расчета `inweek()`:

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`

Диаграмма календаря с выделенным диапазоном функции `inweek()`inweek() ![Диаграмма календаря, демонстрирующая месяц, в котором числа с 9 по 15 выделены зеленым. 9-е число — это воскресенье, а 15-е — суббота.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example1-diagram.png)

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

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

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

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

Обзор

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

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

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

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

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

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

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

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

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

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

```
Products: 
Load 
* 
Inline  
[ 
product_id,manufacture_date,cost_price
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

Результаты

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

* =weekname(manufacture\_date)

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

* =if(only(inweek(manufacture\_date,makedate(2022,01,12),0)),'Defective','Faultless'), чтобы определить, какие из продуктов дефектные, а какие нет, с использованием функции inweek():

* =sum(cost\_price), чтобы показать суммарную стоимость всех продуктов.

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

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

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

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

| weekname(manufacture\_date) | =if(only(inweek(manufacture\_date,makedate(2022,01,12),0)), 'Дефектный','Исправный') | Sum(cost\_price) |
| --- | --- | --- |
| 2022/02 | Бездефектный | 200.09 |
| 2022/03 | Дефектный | 441.51 |
| 2022/04 | Бездефектный | 178.41 |
| 2022/05 | Бездефектный | 231.67 |
| 2022/06 | Бездефектный | 163.91 |

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