Эта функция возвращает номер недели в виде целого числа согласно стандарту ISO 8601. Номер недели высчитывается на основе интерпретации данных выражения согласно стандартной интерпретации чисел.
Отсчет номеров недель начинается с 1 января (так как по умолчанию задано Qlik Sense для использования неполных недель). Первая неделя заканчивается за день до системной переменной FirstWeekDay независимо от того, сколько дней прошло в этой неделе. Системная переменная FirstWeekDay может подавляться в функции week() аргументом first_week_day.
Функция week() также позволяет указать, следует использовать полные или неполные недели, с помощью аргумента broken_weeks. Если используется поддержка неполных недель, то неделя 1 должна включать определенное количество дней в январе, заданное системной переменной ReferenceDay. Таким образом, неделя 1 может начаться в декабре, а неделя 52 или 53 может заканчиваться в январе. В заключение аргумент reference_day позволяет функции переопределить системную переменную ReferenceDay.
В отличие от функции weekname(), функция week() не возвращает в результате значение года. Это позволяет при агрегировании сравнить недели разных годов.
В этой функции можно использовать четыре аргумента.
Аргумент №1: timestamp
Это дата для проверки в виде метки времени или выражения, определяемого по метке времени, которую требуется преобразовать, например «2012-10-12».
Аргумент №2: first_week_day
Если не указать first_week_day, значение переменной FirstWeekDay будет использовано как первый день недели.
Если необходимо использовать другой день в качестве первого дня недели, установите для элемента first_week_day следующее значение:
0 для понедельника
1 для вторника
2 для среды
3 для четверга
4 для пятницы
5 для субботы
6 для воскресенья
Целое число, возвращенное этой функцией, теперь будет использовать первый день недели, заданный параметром first_week_day.
Если параметр broken_weeks не указан, значение переменной BrokenWeeks будет использовано для определения, какими должны быть недели: целыми или разбитыми.
По умолчанию в функциях Qlik Sense используются целые недели. Это означает следующее:
В одних годах 1-я неделя начинается в декабре, а в других годах 52-я или 53-я неделя заканчивается в январе.
В 1-ой неделе всегда не менее четырех дней в январе.
В качестве альтернативы можно использовать разбиение недель.
52-я или 53-я неделя не будет продолжена в январе следующего года.
1-я неделя будет начинаться 1 января и в большинстве случаев она будет неполной.
Если параметр reference_day не указан, значение переменной ReferenceDay будет использовано для определения, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1. По умолчанию в функциях Qlik Sense используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе.
Используйте следующие значения, чтобы задать день ссылки:
Функция The week() полезна, когда требуется сравнить агрегирования по неделям. Например, ее можно использовать, если требуется увидеть общий объем продаж продуктов по неделям. Функции week() отдается предпочтение перед weekname(), когда пользователю требуется, чтобы в вычислении не всегда использовались системные переменные приложения: BrokenWeeks, FirstWeekDay или ReferenceDay.
Кроме того, функция week() выбирается, когда требуется выполнить сравнение данных за несколько лет. С помощью функции week() пользователь может создать собственную комбинацию этих переменных для использования в ситуациях, когда применяется эта функция.
Эти измерения можно либо создать в скрипте загрузки, используя функцию для создания поля в таблице основного календаря, либо использовать непосредственно в диаграмме в качестве вычисляемого измерения.
Примеры функции
Пример
Результат
week(
'10/12/2012')
Возвращает 41.
week(
'35648')
Возвращает 32, так как 35 648 = 08/06/1997.
week('10/12/2012', 0, 1)
Возвращает 42.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Системные переменные по умолчанию
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за последнюю неделю 2021 года, загруженный в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Создание поля week_number, возвращающего год и номер недели, в течение которой совершены транзакции.
Создание поля с именем week_day, которое отображает день недели для каждой даты транзакции.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
week_day
week_number
Результирующая таблица
id
date
week_day
week_number
8183
12/27/2021
Mon
53
8184
12/28/2021
Tue
53
8185
12/29/2021
Wed
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
2
8190
01/03/2022
Mon
2
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
3
8197
01/10/2022
Mon
3
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Поле «week_number» создано предшествующим оператором load с использованием функции week(), где в качестве аргумента функции передано поле date.
Другие параметры не передаются, поэтому следующие переменные по умолчанию оказывают влияние на выполнение функции week():
BrokenWeeks: Отсчет недель начинается с 1 января
FirstWeekDay: первым днем недели является воскресенье
Так как приложение использует системную переменную BrokenWeeks по умолчанию, неделя 1 начинается в субботу 1 января.
Из-за системной переменной FirstWeekDay по умолчанию неделя начинается в воскресенье. Первое воскресенье после 1 января выпадает на 2 января, это первый день недели 2.
Пример 2. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Создание поля week_number, возвращающего год и номер недели, в течение которой совершены транзакции.
Создание поля с именем week_day, которое отображает день недели для каждой даты транзакции.
В этом примере нам нужно задать вторник в качестве первого дня рабочей недели.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
week_day
week_number
Результирующая таблица
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
53
8185
12/29/2021
Wed
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Приложение по-прежнему использует неполные недели. Однако аргументу first_week_day задано значение 1 в функции week(). В результате этого первым днем недели становится вторник.
Приложение использует системную переменную BrokenWeeks по умолчанию, поэтому неделя 1 начинается в субботу 1 января.
Аргумент first_week_day функции week() устанавливает в качестве первого дня недели вторник. Таким образом, неделя 53 начинается 28 декабря 2021 года.
Однако поскольку функция по-прежнему использует неполные недели, неделя 1 будет включать только 2 дня, так как первый вторник после 1 января выпадает на 3 января.
Пример 3. Аргумент unbroken_weeks
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.
В этом примере используются полные недели.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
week_day
week_number
Результирующая таблица
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
52
8185
12/29/2021
Wed
52
8186
12/30/2021
Thu
52
8187
12/31/2021
Fri
52
8188
01/01/2022
Sat
52
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
1
8192
01/05/2022
Wed
1
8193
01/06/2022
Thu
1
8194
01/07/2022
Fri
1
8195
01/08/2022
Sat
1
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
2
8199
01/12/2022
Wed
2
8200
01/13/2022
Thu
2
8201
01/14/2022
Fri
2
Параметру first_week_date задано значение 1, в результате чего первым днем недели становится вторник. Параметру broken_weeks задано значение 0, в результате чего функция использует полные недели. В заключение третий параметр задает reference_day = 2.
Параметру first_week_date задано значение 6, в результате чего первым днем недели становится воскресенье. Параметру broken_weeks задано значение 0, в результате чего функция использует полные недели.
При использовании полных недель неделя 1 необязательно начинается 1 января, но она должна содержать не меньше 4 дней января. Таким образом, в наборе данных неделя 52 заканчивается в субботу, 1 января 2022 года. В таком случае неделя 1 начинается с системой переменной FirstWeekDay, то есть в воскресенье, 2 января. Эта неделя заканчивается в следующую субботу, 8 января.
Пример 4. Аргумент reference_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в третьем примере.
Создание поля week_number, возвращающего год и номер недели, в течение которой совершены транзакции.
Создание поля с именем week_day, которое отображает день недели для каждой даты транзакции.
Кроме того, должны соблюдаться следующие условия:
Рабочая неделя начинается во вторник.
Компания использует полные недели.
Для reference_day задано значение 2. Другими словами, минимальное количество дней января в неделе 1 должно быть 2.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
week_day
week_number
Результирующая таблица
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
1
8185
12/29/2021
Wed
1
8186
12/30/2021
Thu
1
8187
12/31/2021
Fri
1
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Параметру first_week_date задано значение 1, в результате чего первым днем недели становится вторник. Параметру broken_weeks задано значение 0, в результате чего функция использует полные недели. В заключение, третий параметр задает параметр reference_day = 2.
Так как функция использует полные недели и reference_day = 2 в качестве параметра, неделя 1 должна включать хотя бы два дня января. Так как первым днем недели является вторник, неделя 1 начинается 28 декабря 2021 года и заканчивается в понедельник, 3 января 2022 года.
Пример 5. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий номер недели, создается в качестве меры в объекте диаграммы.
Загрузите данные и откройте лист. Создайте новую таблицу.
Добавьте следующие поля как измерения:
id
date
Затем создайте следующую меру:
=week (date)
Создайте меру , week_day, чтобы для каждой даты транзакции отображался день недели:
=weekday(date)
Результирующая таблица
id
date
=week(date)
=weekday(date)
8183
12/27/2021
53
Mon
8184
12/28/2021
53
Tue
8185
12/29/2021
53
Wed
8186
12/30/2021
53
Thu
8187
12/31/2021
53
Fri
8188
01/01/2022
1
Sat
8189
01/02/2022
2
Sun
8190
01/03/2022
2
Mon
8191
01/04/2022
2
Tue
8192
01/05/2022
2
Wed
8193
01/06/2022
2
Thu
8194
01/07/2022
2
Fri
8195
01/08/2022
2
Sat
8196
01/09/2022
3
Sun
8197
01/10/2022
3
Mon
8198
01/11/2022
3
Tue
8199
01/12/2022
3
Wed
8200
01/13/2022
3
Thu
8201
01/14/2022
3
Fri
Поле «week_number» создано предшествующим оператором load с использованием функции week(), где в качестве аргумента функции передано поле date.
Другие параметры не передаются, поэтому следующие переменные по умолчанию оказывают влияние на выполнение функции week():
BrokenWeeks: Отсчет недель начинается с 1 января
FirstWeekDay: Первым днем недели является воскресенье
Так как приложение использует системную переменную BrokenWeeks по умолчанию, неделя 1 начинается в субботу 1 января.
Из-за системной переменной FirstWeekDay по умолчанию неделя начинается в воскресенье. Первое воскресенье после 1 января выпадает на 2 января, это первый день недели 2.
Пример 6. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за последнюю неделю 2019 года и первые две недели 2020 года, загруженный в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Приложение в основном использует неполные недели на информационной панели. Однако конечному пользователю нужен объект диаграммы, на котором представлены общие продажи по неделям с использованием полных недель. В качестве дня ссылки следует задать 2 января, а неделя должна начинаться со вторника. Этого можно добиться, даже если это измерение недоступно в модели данных, используя в диаграмме функцию week() в качестве вычисляемого измерения.
Загрузите данные и откройте лист. Создайте новую таблицу.
Создайте следующее вычисляемое измерение:
=week(date)
Затем создайте следующую меру агрегирования:
=sum(amount)
Задайте параметру меры Формат чисел значение Денежный.
Выберите меню Сортировка и для вычисляемого изменения удалите пользовательскую сортировку.
Отмените выбор параметров Сортировка по численным значениям и Сортировка по алфавиту.
Результирующая таблица
week(date)
sum(amount)
52
$125.69
53
$146.42
1
$200.09
2
$347.57
3
$122.01
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!