# weekyear — функция скриптa и диаграммы

Эта функция возвращает год, к которому относится номер недели в соответствии с переменными среды. Номер недели в году может быть установлен в пределах от 1 до 52.

Синтаксис:

weekyear(timestamp [, first\_week\_day [, broken\_weeks [, reference\_day]]])

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата или метка времени для вычисления. |
| first\_week\_day | Указывает день начала недели. Если не указано, используется значение переменной FirstWeekDay.<br><br>Возможные значения first\_week\_day: 0 — понедельник, 1 — вторник, 2 — среда, 3 — четверг, 4 — пятница, 5 — суббота и 6 — воскресенье.<br><br>Для получения дополнительной информации о системной переменной см. [FirstWeekDay](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Если параметр broken\_weeks не указан, значение переменной BrokenWeeks будет использовано для определения, какими должны быть недели: целыми или разбитыми.<br><br>Для получения дополнительной информации о системной переменной см. [BrokenWeeks](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) |
| reference\_day | Если параметр reference\_day не указан, значение переменной ReferenceDay будет использовано для определения, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1. По умолчанию в функциях Qlik Sense используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе.<br><br>Для получения дополнительной информации о системной переменной см. [ReferenceDay](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) |

Функция `weekyear()` определяет, к какой неделе года относится дата. Затем она возвращает год, соответствующий этому номеру недели.

Если `BrokenWeeks` задано значение `0` (false), `weekyear()` будет возвращать то же, что `year()`.

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

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

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

Однако если системная переменная `BrokenWeeks` задает использование полных недель, неделя 1 должна содержать не меньше определенного количества дней января на основе значения, заданного системной переменной `ReferenceDay`.

Например, если используется `ReferenceDay` = `4`, неделя 1 должна включать не меньше четырех дней января. Неделя 1 может включать дни декабря предыдущего года, а последняя неделя года может включать дни января следующего года. В подобных ситуациях функция `weekyear()` возвращает значение, не совпадающее с результатом функции `year()`.

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

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

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

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

Функция `weekyear()` полезна, когда требуется сравнить агрегирования по годам, например, если требуется увидеть общий объем продаж продуктов по годам. Функции `weekyear()` отдается предпочтение перед `year()`, когда пользователю требуется обеспечить согласованность с переменной `BrokenWeeks` в приложении.

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

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

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

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

| Пример | Результат |
| --- | --- |
| `weekyear('12/30/1996',0,0,4)` | Возвращает 1997, поскольку неделя 1 1997 года начинается 12/30/1996 |
| `weekyear('01/02/1997',0,0,4)` | Возвращает 1997 |
| `weekyear('12/28/1997',0,0,4)` | Возвращает 1997 |
| `weekyear('12/30/1997',0,0,4)` | Возвращает 1998, поскольку неделя 1 1998 года начинается 12/29/1997 |
| `weekyear('01/02/1999',0,0,4)` | Возвращает 1998, поскольку неделя 53 1998 года оканчивается 01/03/1999 |

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

| Тема | Взаимодействие |
| --- | --- |
| [week — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/week.htm) | Возвращает номер недели в виде целого числа согласно стандарту ISO 8601 |
| [year — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/year.htm) | Возвращает год в виде целого числа, а выражение интерпретируется как дата согласно стандартной интерпретации чисел. |

## Пример 1. Неполные недели

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

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

Обзор

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

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

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

* Переменная `BrokenWeeks`, для которой задано значение 1.

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

  * Функция `weekyear()`, заданная как поле `week_year` и возвращающая год, в течение которого совершены транзакции.

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

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

```
SET BrokenWeeks=1; 
						
Transactions: 
	Load 
       *, 
       week(date) as week, 
       weekyear(date) as week_year 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

Результаты

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

* `id`
* `date`
* `week`
* `week_year`

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

| id | date | неделя | неделя\_год |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 29.12.2020 | 53 | 2020 |
| 8178 | 30.12.2020 | 53 | 2020 |
| 8179 | 31.12.2020 | 53 | 2020 |
| 8180 | 01.01.2021 | 1 | 2021 |
| 8181 | 02.01.2021 | 1 | 2021 |
| 8182 | 03.01.2021 | 2 | 2021 |
| 8183 | 04.01.2021 | 2 | 2021 |
| 8184 | 05.01.2021 | 2 | 2021 |
| 8185 | 06.01.2021 | 2 | 2021 |
| 8186 | 07.01.2021 | 2 | 2021 |

Поле `week_year` создано предшествующим оператором load с использованием функции `weekyear()`, где в качестве аргумента функции передано поле даты.

Системной переменной `BrokenWeeks` задано значение `1`, то есть приложение использует неполные недели. Неделя 1 начинается 1 января.

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

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

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

Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля `week_year`.

## Пример 2. Полные недели

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

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

Обзор

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

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

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

* Переменная `BrokenWeeks`, для которой задано значение `0`.

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

  * Функция `weekyear()`, заданная как поле `week_year` и возвращающая год, в течение которого совершены транзакции.

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

Однако в этом примере политика компании требует использования полных недель.

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

```
SET BrokenWeeks=0; 
						
Transactions: 
	Load 
       *, 
       week(date) as week, 
       weekyear(date) as week_year 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

Результаты

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

* `id`
* `date`
* `week`
* `week_year`

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

| id | date | неделя | неделя\_год |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 29.12.2020 | 53 | 2020 |
| 8178 | 30.12.2020 | 53 | 2020 |
| 8179 | 31.12.2020 | 53 | 2020 |
| 8180 | 01.01.2021 | 53 | 2020 |
| 8181 | 02.01.2021 | 53 | 2020 |
| 8182 | 03.01.2021 | 1 | 2021 |
| 8183 | 04.01.2021 | 1 | 2021 |
| 8184 | 01/05/2021 | 1 | 2021 |
| 8185 | 01/06/2021 | 1 | 2021 |
| 8186 | 01/07/2021 | 1 | 2021 |

Системной переменной `BrokenWeeks` задано значение `0`, то есть приложение использует полные недели. Таким образом, неделя 1 не должна начинаться 1 января.

Неделя 53 2020 года продолжается до конца 2 января 2021, а неделя 1 2021 года начинается в воскресение, 3 января 2021 года.

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

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

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

Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля `week_year`.

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

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

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

Обзор

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

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

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

```
SET BrokenWeeks=1; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

Результаты

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

* `id`
* `date`

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

* `=week(date)`

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

* `=weekyear(date)`

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

| id | date | неделя | неделя\_год |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 29.12.2020 | 53 | 2020 |
| 8178 | 30.12.2020 | 53 | 2020 |
| 8179 | 31.12.2020 | 53 | 2020 |
| 8180 | 01.01.2021 | 1 | 2021 |
| 8181 | 02.01.2021 | 1 | 2021 |
| 8182 | 03.01.2021 | 2 | 2021 |
| 8183 | 04.01.2021 | 2 | 2021 |
| 8184 | 05.01.2021 | 2 | 2021 |
| 8185 | 06.01.2021 | 2 | 2021 |
| 8186 | 07.01.2021 | 2 | 2021 |

Поле `week_year` создано предшествующим оператором load с использованием функции `weekyear()`, где в качестве аргумента функции передано поле даты.

Системной переменной `BrokenWeeks` задано значение `1`, то есть приложение использует неполные недели. Неделя 1 начинается 1 января.

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

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

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

Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля `week_year`.

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

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

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

Обзор

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

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

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

* Переменная `BrokenWeeks`, для которой задано значение `0`. Это означает, что приложение будет использовать полные недели.

* Переменная `ReferenceDay`, для которой задано значение `2`. Это означает, что год будет начинаться 2 января и первая неделя будет содержать не меньше двух дней января.

* Переменная `FirstWeekDay`, для которой задано значение `1`. Это значит, что первым днем недели будет вторник.

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

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

```
SET BrokenWeeks=0; 
SET ReferenceDay=2; 
SET FirstWeekDay=1; 
 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42 
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

Результаты

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

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

* `=weekyear(date)`

Чтобы рассчитать общий объем продаж, создайте следующую меру:

* `sum(amount)`

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

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

| weekyear(дата) | sum(amount) |
| --- | --- |
| 2020 | 19.42 |
| 2021 | 373.37 |