Функция makeweekdate() доступна как функция скрипта и как функция диаграммы. Функция вычислит дату на основе переданных ей параметров.
Аргументы
Аргумент
Описание
weekyear
Год, определенный функцией WeekYear() для конкретной даты, то есть год, к которому относится номер недели.
Примечание к информацииНедельный год в некоторых случаях может отличаться от календарного года, например если неделя 1 начинается уже в декабре предыдущего года.
week
Номер недели, определенный функцией Week() для конкретной даты.
Если номер недели не указан, используется 1.
weekday
День недели, определенный функцией WeekDay() для данной даты. 0 — первый день недели, а 6 — последний день недели.
Если день недели не указан, используется 0.
Примечание к информацииНесмотря на то, что 0 всегда означает первый день недели, а 6 — последний, то, каким дням недели это соответствует, определяется параметром first_week_day. Если не указано, используется значение переменной FirstWeekDay.
Если используются неполные недели, а также невозможная комбинация параметров, это может привести к результату, который не относится к выбранному году.
Пример:
MakeWeekDate(2021,1,0,6,1)
Возвращает 'Dec 27 2020', так как этот день является первым днем (воскресенье) указанной недели. 1 января 2021 года было пятницей.
first_week_day
Указывает день начала недели. Если не указано, используется значение переменной FirstWeekDay.
Для получения дополнительной информации о системной переменной см. FirstWeekDay.
broken_weeks
Если параметр broken_weeks не указан, значение переменной BrokenWeeks используется для определения, какими должны быть недели: полными или неполными.
Для получения дополнительной информации о системной переменной см. BrokenWeeks
reference_day
Если параметр reference_day не указан, значение переменной ReferenceDay используется для определения, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1.
Для получения дополнительной информации о системной переменной см. ReferenceDay
Когда это следует использовать
Функция makeweekdate() обычно используется в скрипте для создания данных с целью формирования списка дат или вычисления дат, когда год, неделя и день недели предоставляются во входных данных.
В следующих примерах используется:
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Примеры функции
Пример
Результат
makeweekdate(2014,6,6)
возвращает 02/09/2014
makeweekdate(2014,6,1)
возвращает02/04/2014
makeweekdate(2014,6)
возвращает 02/03/2014 (для недели допускается значение 0)
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. День указан
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий еженедельные общие продажи за 2022 год, в таблице под именем Sales.
Даты транзакций, предоставленные в виде трех полей: year, week и sales.
Предыдущая загрузка, используемая для создания меры end_of_week с помощью функции makeweekdate(), которая возвращает дату для пятницы этой недели в формате MM/DD/YYYY.
Чтобы подтвердить, что возвращаемая дата выпадает на пятницу, в функцию weekday() также помещается выражение end_of_week, которое отображает день недели.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
transaction_year
transaction_week
end_of_week
week_day
Результирующая таблица
transaction_year
transaction_week
end_of_week
week_day
2022
01
01/07/2022
Fri
2022
02
01/14/2022
Fri
2022
03
01/21/2022
Fri
2022
04
01/28/2022
Fri
2022
05
02/04/2022
Fri
2022
06
02/11/2022
Fri
2022
07
02/18/2022
Fri
Поле end_of_week создано в предыдущем операторе load с помощью функции makeweekdate(). Поля transaction_year, transaction_week передаются функции в качестве аргументов года и недели. В качестве аргумента дня используется значение 4.
Затем функция объединяет и преобразует эти значения в поле даты, возвращая результаты в формате системной переменной DateFormat.
Функция makeweekdate() и ее аргументы также помещаются в функцию weekday() с целью возвращения поля week_day. Как показано в таблице выше, поле week_day показывает, что эти даты выпадают на пятницу.
Пример 2. День не указан
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий еженедельные продажи за 2022 год, в таблице под именем Sales.
Даты транзакций, предоставленные в виде трех полей: year, week и sales.
Предыдущая загрузка, которая используется для создания меры first_day_of_week с помощью функции makeweekdate(). Будет возвращена дата для понедельника этой недели в формате MM/DD/YYYY.
Чтобы подтвердить, что возвращаемая дата выпадает на понедельник, в функцию weekday() также помещается выражение first_day_of_week, которое отображает день недели.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
weekday(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
transaction_year
transaction_week
first_day_of_week
week_day
Результирующая таблица
transaction_year
transaction_week
first_day_of_week
week_day
2022
01
01/03/2022
Mon
2022
02
01/10/2022
Mon
2022
03
01/17/2022
Mon
2022
04
01/24/2022
Mon
2022
05
01/31/2022
Mon
2022
06
02/07/2022
Mon
2022
07
02/14/2022
Mon
Поле first_day_of_week создано в предыдущем операторе load с помощью функции makeweekdate(). Параметры transaction_year и transaction_week передаются в качестве аргументов функции, а параметр day остается пустым.
Затем функция объединяет и преобразует эти значения в поле даты, возвращая результаты в формате системной переменной DateFormat.
Функция makeweekdate() и ее аргументы также помещаются в функцию weekday(), в результате чего возвращается поле week_day. Как видно из приведенной выше таблицы, во всех случаях поле week_day возвращает понедельник, поскольку этот параметр был оставлен пустым в функции makeweekdate(), которая по умолчанию имеет значение 0 (первый день недели), а первый день недели установлен на понедельник системной переменной FirstWeekDay.
Пример 3. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий еженедельные продажи за 2022 год, в таблице под именем Sales.
Даты транзакций, предоставленные в виде трех полей: year, week и sales.
В этом примере объект диаграммы используется для создания меры, эквивалентной вычислению end_of_week из первого примера. Эта мера будет использовать функцию makeweekdate(), чтобы вернуть дату для пятницы этой недели в формате MM/DD/YYYY.
Для подтверждения того, что возвращаемая дата выпадает на пятницу, создается вторая мера, которая возвращает день недели.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Результаты
Выполните следующие действия.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
transaction_year
transaction_week
Чтобы выполнить вычисление, эквивалентное вычислению поля end_of_week из первого примера, создайте следующую меру:
Поле, эквивалентное полю end_of_week, создается как мера в объекте диаграммы с помощью функции makeweekdate(). Поля transaction_year и transaction_week передаются функции в качестве аргументов года и недели. В качестве аргумента дня используется значение 4.
Затем функция объединяет и преобразует эти значения в поле даты, возвращая результаты в формате системной переменной DateFormat.
Функция makeweekdate() и ее аргументы также помещаются в функцию weekday(), в результате чего возвращается вычисление, эквивалентное вычислению поля week_day из первого примера. Как видно по таблице выше, в последнем столбце справа показано, что эти даты выпадают на пятницу.
Пример 4. Сценарий
Обзор
В этом примере создайте список дат, содержащий все пятницы в 2022 году.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
Результаты
Результирующая таблица
date
weekday
01/07/2022
Fri
01/14/2022
Fri
01/21/2022
Fri
01/28/2022
Fri
02/04/2022
Fri
02/11/2022
Fri
02/18/2022
Fri
02/25/2022
Fri
03/04/2022
Fri
03/11/2022
Fri
03/18/2022
Fri
03/25/2022
Fri
04/01/2022
Fri
04/08/2022
Fri
04/15/2022
Fri
04/22/2022
Fri
04/29/2022
Fri
05/06/2022
Fri
05/13/2022
Fri
05/20/2022
Fri
05/27/2022
Fri
06/03/2022
Fri
06/10/2022
Fri
06/17/2022
Fri
+ 27 строк
Функция makeweekdate() находит все пятницы в 2022 году. Использование параметра week = -2 позволяет предотвратить пропуски дат. В заключение предыдущая загрузка создает дополнительное поле weekday для уточнения, что каждое значение date попадает на пятницу.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!