Эта функция возвращает значение True, если значение timestamp находится в пределах части недели, включающей значение, заданное в поле base_date до последней миллисекунды, указанной в поле base_date, включительно.
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Функция inweektodate() использует параметр base_date для определения даты максимальной границы сегмента недели, а также соответствующей даты начала недели, которая основана на системной переменнойFirstWeekDay (или определяемом пользователем параметре first_week_day). После определения сегмента недели функция возвращает булевы результаты при сравнении предписанных значений даты с этим сегментом.
Когда это следует использовать
Функция inweektodate() возвращает результат в виде логического значения. Обычно этот тип функции используется в качестве условия в выражении if. Функция возвращает агрегирование или расчет в зависимости от того, попадает ли проверяемая дата в рассматриваемую неделю до указанной даты включительно.
Например, функцию inweektodate() можно использовать для расчета всех продаж, совершенных в течение указанной недели до определенной даты.
Аргументы
Аргумент
Описание
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.
Чтобы неделя начиналась в понедельник и заканчивалась в воскресенье, используйте флаг 0 для понедельника, 1 для вторника, 2 для среды, 3 для четверга, 4 для пятницы, 5 для субботы и 6 для воскресенья.
Примеры функции
Пример
Взаимодействие
inweektodate('01/12/2006', '01/12/2006', 0)
Возвращает TRUE.
inweektodate('01/12/2006', '01/11/2006', 0)
Возвращает FALSE.
inweektodate('01/12/2006', '01/18/2006', -1)
Возвращает FALSE. Поскольку для элемента period_no указано значение -1, дата вступления в силу timestamp измеряется на основе 01/11/2006.
inweektodate('01/11/2006', '01/12/2006', 0, 3 )
Возвращает FALSE, поскольку для элемента first_week_day указано значение 3 (четверг), в результате чего элемент 01/12/2006 становится первым днем недели после недели с элементом 01/12/2006.
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. Изменение региональных настроек для создания приложений и скриптов.
Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за январь 2022 года, который загружается в таблицу под именем Transactions.
Поле даты представлено в формате TimestampFormat='M/D/YYYY h:mm:ss[.fff]'.
Создание поля in_week_to_date, которое определяет, какие транзакции совершены в течение недели до 14 января 2022 года.
Создание дополнительного поля под именем weekday с использованием функции weekday(). Это новое поле создано, чтобы показать, какой день недели соответствует каждой дате.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
in_week_to_date
Результирующая таблица
date
week_day
in_week_to_date
2022-01-02 12:22:06
Sun
0
2022-01-05 01:02:30
Wed
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Sun
-1
2022-01-10 21:13:01
Mon
-1
2022-01-11 00:57:13
Tue
-1
2022-01-12 09:26:02
Wed
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Sun
0
2022-01-17 10:44:16
Mon
0
2022-01-18 18:48:17
Tue
0
2022-01-26 04:36:03
Wed
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Sun
0
2022-01-30 14:40:19
Sun
0
2022-01-31 05:28:21
Mon
0
Поле in_week_to_date создано в предшествующем операторе load с помощью функции inweektodate(). Первый предоставленный аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата «14 мая», которая представляет собой base_date, определяющий, какую неделю сегментировать, и определяющий конечную границу этого сегмента. period_no = 0 — это последний аргумент, означающий, что функция не сравнивает недели, предшествующие или следующие за сегментированной недели.
Системная переменная FirstWeekDay определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 14 января будут действительным периодом для расчета inweekdodate() :
Любая транзакция, совершенная в период с 9 апреля по 14 января, возвращает булев результат TRUE. Транзакции до и после дат возвращают логический результат FALSE.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля prev_week_to_date, определяющего, какие транзакции совершены в течение полной недели до сегмента недели, который заканчивается 14 января 2022 года.
Создание дополнительного поля под именем weekday с использованием функции weekday(). Это новое поле создано, чтобы показать, какой день недели соответствует каждой дате.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
prev_week_to_date
Результирующая таблица
date
week_day
prev_week_to_date
2022-01-02 12:22:06
Sun
-1
2022-01-05 01:02:30
Wed
-1
2022-01-06 15:36:20
Thu
-1
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Sun
0
2022-01-10 21:13:01
Mon
0
2022-01-11 00:57:13
Tue
0
2022-01-12 09:26:02
Wed
0
2022-01-13 15:05:09
Thu
0
2022-01-14 18:44:57
Fri
0
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Sun
0
2022-01-17 10:44:16
Mon
0
2022-01-18 18:48:17
Tue
0
2022-01-26 04:36:03
Wed
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Sun
0
2022-01-30 14:40:19
Sun
0
2022-01-31 05:28:21
Mon
0
Значение period_no равное -1 указывает, что функция inweektodate () сравнивает сегмент входной недели с предыдущей неделей. Сегмент недели первоначально соответствует периоду с 9 по 14 января. Затем period_no смещает как начальную, так и конечную границу этого сегмента на одну неделю назад, в результате чего границы периода дат переносятся на 2 января и 7 января.
Таким образом, любая транзакция, совершенная в период с 2 до 8 января (не включая 8 января), возвращает булев результат TRUE.
Пример 3. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля in_week_to_date, которое определяет, какие транзакции совершены в течение недели до 14 января 2022 года.
Создание дополнительного поля под именем weekday с использованием функции weekday(). Это новое поле создано, чтобы показать, какой день недели соответствует каждой дате.
В этом примере мы используем понедельник в качестве первого дня недели.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
week_day
in_week_to_date
Результирующая таблица
date
week_day
in_week_to_date
2022-01-02 12:22:06
Sun
0
2022-01-05 01:02:30
Wed
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Sun
0
2022-01-10 21:13:01
Mon
-1
2022-01-11 00:57:13
Tue
-1
2022-01-12 09:26:02
Wed
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Sun
0
2022-01-17 10:44:16
Mon
0
2022-01-18 18:48:17
Tue
0
2022-01-26 04:36:03
Wed
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Sun
0
2022-01-30 14:40:19
Sun
0
2022-01-31 05:28:21
Mon
0
При использовании 0 в качестве аргумента inweektodate() в функции first_week_day аргумент функции заменяет системную переменную FirstWeekDay и устанавливает понедельник в качестве первого дня недели.
Таким образом, для любой транзакции, совершенной между 10 марта и 14 января, возвращается булев результат TRUE, а для транзакций с датами вне этих границ — значение FALSE.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который определяет, совершены ли транзакции на той неделе до 14 января 2022 года, создается как мера в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.
Чтобы рассчитать, происходили ли транзакции на той же неделе до 14 января, создайте следующую меру:
=inweektodate(date,'01/14/2022',0)
Чтобы показать, какой день недели соответствует каждой дате, создайте дополнительную меру.
=weekday(date)
Результирующая таблица
date
week_day
in_week_to_date
2022-01-02 12:22:06
Sun
0
2022-01-05 01:02:30
Wed
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Sun
-1
2022-01-10 21:13:01
Mon
-1
2022-01-11 00:57:13
Tue
-1
2022-01-12 09:26:02
Wed
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Sun
0
2022-01-17 10:44:16
Mon
0
2022-01-18 18:48:17
Tue
0
2022-01-26 04:36:03
Wed
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Sun
0
2022-01-30 14:40:19
Sun
0
2022-01-31 05:28:21
Mon
0
Поле in_week_to_date создается в объекте диаграммы в качестве меры с помощью функции inweektodate(). Первый предоставленный аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата «14 мая», которая представляет собой base_date, определяющий, какую неделю сегментировать, и определяющий конечную границу этого сегмента. period_no = 0 — это последний аргумент, означающий, что функция не сравнивает недели, предшествующие или следующие за сегментированной недели.
Системная переменная FirstWeekDay определяет, что недели начинаются в воскресенье и заканчиваются в субботу. Таким образом, январь будет разбит на недели в соответствии с приведенной ниже диаграммой, где даты между 9 и 14 января будут действительным периодом для расчета inweekdodate() :
Любая транзакция, совершенная в период с 9 апреля по 14 января, возвращает булев результат TRUE. Транзакции до и после дат возвращают булев результат FALSE.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу под именем Products
Информация об идентификаторе продукта, дате изготовления и себестоимости.
Установлено, что вследствие ошибки оборудования изделия, изготовленные в течение недели, на которую выпадает 12 января, являются дефектными. Проблема была решена 13 января. Конечному пользователю требуется объект диаграммы, который отображает по неделе, какие изготовленные продукты были дефектными, а какие бездефектными, а также стоимость продуктов, изготовленных на этой неделе.
Функция inweektodate() возвращает булево значение при проверке дат производства каждого продукта. Продукты, для которых возвращается булево значение TRUE, помечаются как 'Defective'. Продукты, для которых возвращается значение FALSE и которые, следовательно, не произведены в течение недели до 12 января, помечаются как ‘Faultless’.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!