Эта функция возвращает год, которому принадлежит номер недели согласно стандарту ISO 8601. Номер недели в году может быть установлен в пределах от 1 до 52.
Синтаксис:
weekyear(expression)
Возвращаемые типы данных: целое
Функция weekyear() определяет, к какой неделе года относится дата. Затем она возвращает год, соответствующий этому номеру недели.
В приложениях Qlik по умолчанию используются неполные недели (это определяет системная переменная BrokenWeeks), и неделя 1 начинается 1 января, а год заканчивается после недели 52. Таким образом, функция weekyear() всегда возвращает то же значение, что функция week(), когда приложение использует неполные недели.
Однако если системная переменная BrokenWeeks задает использование полных недель, неделя 1 должна содержать не меньше определенного количества дней января на основе значения, заданного системной переменной ReferenceDay.
Например, если используется ReferenceDay = 4, неделя 1 должна включать не меньше четырех дней января. Неделя 1 может включать дни декабря предыдущего года, а последняя неделя года может включать дни января следующего года. В подобных ситуациях функция weekyear() возвращает значение, не совпадающее с результатом функции year().
Когда это следует использовать
Функция weekyear() полезна, когда требуется сравнить агрегирования по годам, например, если требуется увидеть общий объем продаж продуктов по годам. Функции weekyear() отдается предпочтение перед year(), когда пользователю требуется обеспечить согласованность с переменной BrokenWeeks в приложении.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Примеры функции
Пример
Результат
weekyear('12/30/1996')
Возвращает 1997, поскольку неделя 1 1997 года начинается 12/30/1996
weekyear('01/02/1997')
Возвращает 1997
weekyear('12/28/1997')
Возвращает 1997
weekyear('12/30/1997')
Возвращает 1998, поскольку неделя 1 1998 года начинается 12/29/1997
weekyear('01/02/1999')
Возвращает 1998, поскольку неделя 53 1998 года оканчивается 01/03/1999
Возвращает год в виде целого числа, а выражение интерпретируется как дата согласно стандартной интерпретации чисел.
Пример 1. Неполные недели
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за последнюю неделю 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
week
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
Поле week_year создано предшествующим оператором load с использованием функции weekyear(), где в качестве аргумента функции передано поле даты.
Системной переменной BrokenWeeks задано значение 1, то есть приложение использует неполные недели. Неделя 1 начинается 1 января.
Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля week_year.
Пример 2. Полные недели
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за последнюю неделю 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
week
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
53
2020
8181
01/02/2021
53
2020
8182
01/03/2021
1
2021
8183
01/04/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 года.
Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля week_year.
Пример 3. Пример объекта диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий номер недели года, в течение которой совершена транзакция, создается как мера в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
Чтобы рассчитать неделю, когда была совершена транзакция, создайте следующую меру:
=week(date)
Чтобы по номеру недели рассчитать год, когда была совершена транзакция, создайте следующую меру:
=weekyear(date)
Результирующая таблица
id
date
week
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
Поле week_year создано предшествующим оператором load с использованием функции weekyear(), где в качестве аргумента функции передано поле даты.
Системной переменной BrokenWeeks задано значение 1, то есть приложение использует неполные недели. Неделя 1 начинается 1 января.
Транзакция 8181 совершена 2 января, то есть в течение недели 1. Поэтому функция возвращает значение 2021 для поля week_year.
Пример 4. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за последнюю неделю 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(date)
=sum(amount)
2020
19.42
2021
373.37
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!