Для получения дополнительной информации о системной переменной см. FirstWeekDay.
broken_weeks
Если параметр broken_weeks не указан, значение переменной BrokenWeeks будет использовано для определения, какими должны быть недели: целыми или разбитыми.
Для получения дополнительной информации о системной переменной см. BrokenWeeks
reference_day
Если параметр reference_day не указан, значение переменной ReferenceDay будет использовано для определения, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1. По умолчанию в функциях Qlik Sense используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе.
Для получения дополнительной информации о системной переменной см. ReferenceDay
Функция week() определяет, на какую неделю приходится дата, и возвращает номер этой недели.
В Qlik Sense региональные настройки извлекаются при создании приложения и соответствующие параметры хранятся в скрипте как переменные среды. Они используются для определения номера недели.
Это означает, что большинство европейских разработчиков приложений получают следующие переменные среды в соответствии с определением ISO 8601:
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; // Use unbroken weeks
Set ReferenceDay =4; // Jan 4th is always in week 1
Североамериканские разработчики приложений часто получают следующие переменные среды:
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; // Use broken weeks
Set ReferenceDay =1; // Jan 1st is always in week 1
Первый день недели определяется системной переменной FirstWeekDay. Также можно изменить первый день недели, используя аргумент first_week_day в функции week().
Если приложение использует неполные недели, отсчет номера недели начинается с 1 января и заканчивается за день до системной переменной FirstWeekDay независимо от того, сколько дней прошло.
Если в приложении используются непрерывные недели, неделя 1 может начинаться в предыдущем году или в первые несколько дней января. Это зависит от того, как используются переменные среды FirstWeekDay и ReferenceDay.
Когда это следует использовать
Функция The week() полезна, когда требуется сравнить агрегирования по неделям. Например, ее можно использовать, если требуется увидеть общий объем продаж продуктов по неделям. Функции week() отдается предпочтение перед weekname(), когда пользователю требуется, чтобы в вычислении не всегда использовались системные переменные приложения: BrokenWeeks, FirstWeekDay или ReferenceDay.
Например, если требуется увидеть общий объем продаж продуктов по неделям.
Если приложение использует полные недели, неделя 1 может содержать даты декабря предыдущего года или исключать даты января текущего года. Если приложение использует неполные недели, неделя 1 может содержать менее семи дней.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
В приведенных ниже примерах используется
Set DateFormat= 'MM/DD/YYYY';
Set FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Примеры функции
Пример
Результат
week('12/28/2021')
Возвращает 52.
week(44614)
Возвращает 8, так как это порядковый номер для 02/22/2022.
week('01/03/2021')
Возвращает 53.
week('01/03/2021',6)
Возвращает 1.
Пример 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
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!