Эта функция определяет, находится ли значение timestamp в пределах части лунной недели до последней миллисекунды, указанной в поле base_date, включительно. При определении лунных недель в Qlik Sense первым днем первой недели считается 1 января. Все недели, кроме последней будут содержать ровно 7 дней.
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Функция inlunarweektodate() выступает в роли конечной точки лунной недели. В противоположность этому, функция inlunarweek() определяет, на какую лунную неделю выпадает base_date. Например, если base_date = 5 января, любая метка времени с 1 по 5 января может возвращать булев результат TRUE, а 6, 7 января и более поздние метки времени будут возвращать булев результат FALSE.
Аргументы
Аргумент
Описание
timestamp
Дата, которую необходимо сравнить со значением, указанным в поле base_date.
base_date
Дата, использующаяся для оценки лунной недели.
period_no
Лунную неделю можно сместить, задав значение в поле period_no. period_no — целое число, где 0 обозначает лунную неделю, включающую значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие лунные недели, положительные — последующие.
first_week_day
Смещение, которое может быть больше или меньше нуля. Оно изменяет начало года указанным количеством дней и/или десятичных значений.
Когда это следует использовать
Функция inlunarweektodate() возвращает результат в виде булева значения. Обычно этот тип функции используется в качестве условия в выражении IF. Функция inlunarweektodate() используется, когда пользователю требуется произвести расчеты с целью агрегирования или вычисления в зависимости от того, относится ли рассматриваемая дата к определенному отрезку рассматриваемой недели.
Например, функцию inlunarweektodate() можно использовать для идентификации всего оборудования, изготовленного в определенную неделю: с начала недели и до определенной даты включительно.
Примеры функции
Пример
Результат
inlunarweektodate('01/12/2013', '01/13/2013',
0)
Возвращает TRUE, поскольку значение timestamp, 01/12/2013, выпадает на часть недели с 01/08/2013 по 01/13/2013.
inlunarweektodate('01/12/2013', '01/11/2013',
0)
Возвращает FALSE, поскольку значение timestamp имеет более позднюю дату, чем значение base_date, несмотря на то что обе даты приходятся на одну и ту же лунную неделю до 01/12/2012.
inlunarweektodate('01/12/2006', '01/05/2006',
1)
Возвращает TRUE. При указании значения 1 для period_no происходит сдвиг base_date на одну неделю вперед, таким образом, значение timestamp выпадает на часть лунной недели.
Функция inlunarweektodate() часто используется в сочетании со следующими функциями:
Эта функция позволяет определить, к какой по порядку лунной неделе года относится входная дата.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Без дополнительных аргументов
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за январь, который загружается в таблицу под именем Transactions. Используется системная переменная DateFormat со значением по умолчанию MM/DD/YYYY.
Создайте поле in_lunar_week_to_date, которое определяет, какие транзакции совершены в ту же лунную неделю, к которой относится 10 января.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_lunar_week_to_date
Результирующая таблица
date
in_lunar_week_to_date
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
Поле in_lunar_week_to_date создано предшествующим оператором load с использованием функции inlunarweektodate(), где в качестве аргументов функции переданы поле date, жестко запрограммированная дата 10 января в качестве base_date и сдвиг 0.
Так как лунная неделя начинается 1 января, 10 января относится к лунной неделе, которая начинается 8 января; и поскольку используется функция inlunarweektodate(), эта лунная неделя заканчивается 10 января. Поэтому все транзакции, которые совершаются между этими числами января будут возвращать булево значение TRUE. Это можно проверить в таблице результатов.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере стоит задача создать поле 2_lunar_weeks_later, которое определяет, совершены ли транзакции через две недели после лунной недели, которая началась 1 января.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
2_lunar_weeks_later
Результирующая таблица
date
2_lunar_weeks_later
1/1/2022
0
1/4/2022
0
1/10/2022
0
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
-1
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
В данном примере функция inlunarweektodate() определяет, что лунная неделя до 10 января содержит три дня (8, 9 и 10 января). Так как в качестве аргумента сдвига использовался period_no = 2, эта лунная неделя сдвигается на 14 дней. Поэтому создается определение трехдневной недели, которая включает 22, 23 и 24 января. Любая транзакция, совершенная в период с 22 по 24 января, возвращает булев результат TRUE.
Пример 3. Аргумент first_week_day
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Используется системная переменная DateFormat со значением по умолчанию MM/DD/YYYY.
Аргумент first_week_date имеет значение 3. Это задает в качестве начала лунных недель 3 января.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_lunar_week_to_date
Результирующая таблица
date
in_lunar_week_to_date
1/1/2022
0
1/4/2022
-1
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
Так как в данном примере используется аргумент the first_week_date = 3 для функции inlunarweek(), первая лунная неделя начинается 3 января и заканчивается 10 января. Так как 10 января также является значением base_date, любая транзакция, которая совершается между этими датами, возвращает булево значение TRUE.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который определяет, совершены ли транзакции в лунную неделю до 10 января, создается как мера в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.
Создайте следующую меру:
=inlunarweektodate(date,'01/10/2022', 0)
Результирующая таблица
date
=inlunarweektodate(date,'01/10/2022', 0)
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
Мера in_lunar_week_to_date создана в объекте диаграммы с использованием функции inlunarweektodate(), где в качестве аргументов функции переданы поле даты, жестко запрограммированная дата 10 января в качестве base_date и сдвиг 0.
Так как лунная неделя начинается 1 января, 10 января относится к лунной неделе, которая начинается 8 января. Кроме того, поскольку используется функция inlunarweektodate(), эта лунная неделя заканчивается 10 января. Поэтому все транзакции, которые совершаются между этими числами января будут возвращать булево значение TRUE. Это можно проверить в таблице результатов.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу под именем Products
Информация, содержащая идентификатор продукта, дату изготовления и себестоимость.
Установлено, что вследствие ошибки оборудования продукты, изготовленные в течение лунной недели, на которую выпадает 12 января, являются дефектными. Проблема была решена 13 января. Конечному пользователю требуется объект диаграммы, который отображает по неделе, какие изготовленные продукты были дефектными, а какие бездефектными, а также стоимость продуктов, изготовленных на этой неделе.
Функция inlunarweektodate() возвращает булево значение при проверке дат производства каждого продукта. Продукты, для которых возвращается булево значение TRUE, помечаются как ‘Defective’. Продукты, для которых возвращается значение FALSE и которые, следовательно, не произведены в течение лунной недели до 12 января, помечаются как ‘Faultless’.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!