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