В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Функция inweek() использует аргумент base_date для определения того, в какой семидневный период попадает дата. Начало недели определяется системной переменной FirstWeekDay. Однако также можно изменить первый день недели, используя аргумент first_week_day в функции inweek().
После выбора недели функция возвращает булевы результаты при сравнении предписанных значений даты с этим сегментом.
Когда это следует использовать
Функция inweek() возвращает результат в виде булева значения. Обычно этот тип функции используется в качестве условия в if expression. Функция inweek() возвращает агрегирование или вычисление в зависимости от того, попадает ли проверяемая дата в неделю, к которой относится дата, переданная в аргументе base_date.
Например, функцию inweek() можно использовать для идентификации всего оборудования, изготовленного в течение указанной недели.
Аргументы
Аргумент
Описание
timestamp
Дата, которую необходимо сравнить со значением, указанным в поле base_date.
base_date
Дата, использующаяся для оценки недели.
period_no
Неделю можно сместить, задав значение в поле period_no. period_no — целое число, где 0 обозначает неделю, включающую значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие недели, положительные — последующие.
first_week_day
По умолчанию первым днем недели является воскресенье (согласно системной переменной FirstWeekDay), начиная с полуночи между субботой и воскресеньем. Параметр first_week_day заменяет переменную FirstWeekDay. Чтобы задать другой день в качестве начала недели, укажите флаг от 0 до 6.
значения first_week_day
День
Значение
Понедельник
0
Вторник
1
Среда
2
Четверг
3
Пятница
4
Суббота
5
Воскресенье
6
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Примеры функции
Пример
Результат
inweek ('01/12/2006', '01/14/2006', 0)
Возвращает TRUE
inweek ('01/12/2006', '01/20/2006', 0 )
Возвращает FALSE
inweek ('01/12/2006', '01/14/2006', -1 )
Возвращает FALSE
inweek ('01/07/2006', '01/14/2006', -1)
Возвращает TRUE
inweek ('01/12/2006', '01/09/2006', 0, 3)
Возвращает FALSE, поскольку для аргумента first_week_day указано значение 3 (четверг), в результате чего 01/12/2006 становится первым днем недели после недели, содержащей дату 01/09/2006.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
in_week
Результирующая таблица
date
week_day
in_week
01/02/2022
Sun
0
01/05/2022
Wed
0
01/06/2022
Thu
0
01/08/2022
Sat
0
01/09/2022
Sun
-1
01/10/2022
Mon
-1
01/11/2022
Tue
-1
01/12/2022
Wed
-1
01/13/2022
Thu
-1
01/14/2022
Fri
-1
01/15/2022
Sat
-1
01/16/2022
Sun
0
01/17/2022
Mon
0
01/18/2022
Tue
0
01/26/2022
Wed
0
01/27/2022
Thu
0
01/28/2022
Fri
0
01/29/2022
Sat
0
01/30/2022
Sun
0
01/31/2022
Mon
0
Поле in_week создано в предыдущем операторе load с помощью функции inweek(). Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата 14 января, которая выступает в роли base_date. Аргумент base_date работает с системной переменной FirstWeekDay для идентификации сравниваемой недели. period_no = 0 означает, что функция не сравнивает недели, следующие до или после сегментированной недели; это последний аргумент.
Системная переменная FirstWeekDay определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 15 января будут действительным периодом для расчета inweek():
Любая транзакция, совершенная в период с 9 по 15 января, возвращает булев результат TRUE.
Пример 2. Аргумент period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Тот же набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Системная переменная FirstWeekDay, для которой задано значение 6 (воскресенье).
Предыдущая загрузка, которая содержит следующее:
Функция inweek (), которая задана как поле prev_week и определяет, какие транзакции совершены за неделю до недели, к которой относится 14 января 2022 года.
Функция weekday(), которая задана как поле week_day, и показывает, какой день недели соответствует каждой дате.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
prev_week
Результирующая таблица
date
week_day
prev_week
01/02/2022
Sun
-1
01/05/2022
Wed
-1
01/06/2022
Thu
-1
01/08/2022
Sat
-1
01/09/2022
Sun
0
01/10/2022
Mon
0
01/11/2022
Tue
0
01/12/2022
Wed
0
01/13/2022
Thu
0
01/14/2022
Fri
0
01/15/2022
Sat
0
01/16/2022
Sun
0
01/17/2022
Mon
0
01/18/2022
Tue
0
01/26/2022
Wed
0
01/27/2022
Thu
0
01/28/2022
Fri
0
01/29/2022
Sat
0
01/30/2022
Sun
0
01/31/2022
Mon
0
Используя -1 в качестве аргумента period_no, функция inweek() сдвигает границы сравниваемой недели на семь дней назад. При period_no = 0 границами недели являются 9 и 15 января. Но в этом примере period_no = -1 сдвигает начальную и конечную границы этого сегмента на одну неделю назад. Границы диапазона дат переносятся на 2 и 8 января.
Таким образом, любая транзакция, совершенная в период с 2 по 8 января, возвращает булев результат TRUE.
Пример 3. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Тот же набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Системная переменная FirstWeekDay, для которой задано значение 6 (воскресенье).
Предыдущая загрузка, которая содержит следующее:
Функция inweek(), которая задана как поле in_week и определяет, какие транзакции совершены в течение недели, к которой относится 14 января 2022 года.
Функция weekday(), которая задана как поле week_day и показывает, какой день недели соответствует каждой дате.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
in_week
Результирующая таблица
date
week_day
in_week
01/02/2022
Sun
0
01/05/2022
Wed
0
01/06/2022
Thu
0
01/08/2022
Sat
0
01/09/2022
Sun
0
01/10/2022
Mon
-1
01/11/2022
Tue
-1
01/12/2022
Wed
-1
01/13/2022
Thu
-1
01/14/2022
Fri
-1
01/15/2022
Sat
-1
01/16/2022
Sun
-1
01/17/2022
Mon
0
01/18/2022
Tue
0
01/26/2022
Wed
0
01/27/2022
Thu
0
01/28/2022
Fri
0
01/29/2022
Sat
0
01/30/2022
Sun
0
01/31/2022
Mon
0
Использование 0 в качестве аргумента в функции first_week_day аргумент функции inweek() заменяет системную переменную FirstWeekDay и устанавливает понедельник в качестве первого дня недели.
Таким образом, любая транзакция, совершенная в период с 10 по 16 января, возвращает булев результат TRUE.
Пример 4. Пример объекта диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Создайте меру в таблице результатов, чтобы определить, какие транзакции совершены в течение недели, к которой относится 14 января 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
date
Создайте следующие меры:
=inweek (date,'01/14/2022',0), чтобы вычислить, какие транзакции совершены в течение недели, к которой относится 14 января.
=weekday(date), чтобы показать, какой день недели соответствует каждой дате.
Результирующая таблица
date
week_day
=inweek (date,'01/14/2022',0)
01/02/2022
Sun
0
01/05/2022
Wed
0
01/06/2022
Thu
0
01/08/2022
Sat
0
01/09/2022
Sun
-1
01/10/2022
Mon
-1
01/11/2022
Tue
-1
01/12/2022
Wed
-1
01/13/2022
Thu
-1
01/14/2022
Fri
-1
01/15/2022
Sat
-1
01/16/2022
Sun
0
01/17/2022
Mon
0
01/18/2022
Tue
0
01/26/2022
Wed
0
01/27/2022
Thu
0
01/28/2022
Fri
0
01/29/2022
Sat
0
01/30/2022
Sun
0
01/31/2022
Mon
0
Мера in_week создается в диаграмме с помощью функции inweek(). Первый аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата 14 января, которая выступает в роли base_date. Аргумент base_date работает с системной переменной FirstWeekDay для идентификации сравниваемой недели. Заключительный аргумент — period_no = 0.
Системная переменная FirstWeekDay определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 15 января будут действительным периодом для расчета inweek():
Любая транзакция, совершенная в период с 9 по 15 января, возвращает булев результат TRUE.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, загруженный в таблицу под именем Products.
Данная таблица содержит следующие поля:
product ID (ИД продукта)
product type (тип продукта)
manufacture date (дата изготовления)
cost price (себестоимость)
Установлено, что вследствие ошибки оборудования продукты, изготовленные в течение недели, на которую выпадает 12 января, являются дефектными. Конечному пользователю требуется диаграмма, которая отображает по неделе, какие изготовленные продукты были дефектными, а какие бездефектными, а также стоимость продуктов, изготовленных на этой неделе.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
=weekname(manufacture_date)
Создайте следующие меры:
=if(only(inweek(manufacture_date,makedate(2022,01,12),0)),'Defective','Faultless'), чтобы определить, какие из продуктов дефектные, а какие нет, с использованием функции inweek():
=sum(cost_price), чтобы показать суммарную стоимость всех продуктов.
Выполните следующие действия.
Задайте параметру Формат чисел меры значение Денежный.
Функция inweek() возвращает логическое значение при проверке дат производства каждого продукта. Для любого продукта, изготовленного 12 января, функция inweek() возвращает булево значение TRUE и ставит отметку «Дефектный». Любой продукт, который возвращает значение FALSE, то есть изготовлен в другую неделю, отмечается как «Бездефектный».
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!