Эта функция возвращает значение True, если значение timestamp находится в пределах части года, включающей значение, заданное в поле base_date до последней миллисекунды, указанной в поле base_date, включительно.
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Функция inyeartodate() сегментирует конкретный период года, а base_date определяет максимально допустимую дату для этого сегмента года. Затем функция оценивает, попадает ли поле даты или значение в этот сегмент, и возвращает булев результат.
Аргументы
Аргумент
Описание
timestamp
Дата, которую необходимо сравнить со значением, указанным в поле base_date.
base_date
Дата, использующаяся для оценки года.
period_no
Год можно сместить, задав значение в поле period_no. period_no — целое число, где 0 обозначает год, включающий значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие годы, положительные — последующие.
first_month_of_year
Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year.
Когда это следует использовать
Функция inyeartodate() возвращает результат в виде логического значения. Обычно этот тип функции используется в качестве условия в выражении if. Это возвращает агрегирование или вычисление в зависимости от того, попадает ли проверяемая дата в год до рассматриваемой даты включительно.
Например, функцию inyeartodate() можно использовать для идентификации всего оборудования, изготовленного в указанном году до определенной даты.
В этих примерах используется формат даты MM/DD/YYYY. Формат даты указан в операторе SET DateFormat в верхней части скрипта загрузки данных. Измените формат в примерах согласно своим пожеланиям.
Примеры функции
Пример
Результат
inyeartodate ('01/25/2013', '02/01/2013', 0)
Возвращает TRUE.
inyeartodate ('01/25/2012', '01/01/2013', 0)
Возвращает FALSE.
inyeartodate ('01/25/2012', '02/01/2013', -1)
Возвращает TRUE.
inyeartodate ('11/25/2012', '01/31/2013', 0, 4)
Возвращает TRUE. Значение timestamp выпадает на финансовый год, начинающийся в четвертом месяце, и до значения base_date.
inyeartodate ('3/31/2013', '01/31/2013', 0, 4 )
Возвращает FALSE. По сравнению с предыдущим примером, значение timestamp все еще находится в финансовом году, но после значения base_date, таким образом, оно находится за пределами части года.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Без дополнительных аргументов
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций с 2020 по 2022 год, который загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Создание поля in_year_to_date, которое определяет, какие транзакции совершены в течение года до 26 июля 2021 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_year_to_date
Результирующая таблица
date
in_year_to_date
01/13/2020
0
02/26/2020
0
03/27/2020
0
04/16/2020
0
05/21/2020
0
06/14/2020
0
08/07/2020
0
09/05/2020
0
01/22/2021
-1
02/03/2021
-1
03/17/2021
-1
04/23/2021
-1
05/04/2021
-1
06/30/2021
-1
07/26/2021
-1
07/27/2021
0
06/06/2022
0
07/18/2022
0
11/14/2022
0
12/12/2022
0
Поле in_year_to_date создано в предшествующем операторе load с помощью функции inyeartodate(). Первый предоставленный аргумент определяет, какое поле оценивается.
Второй аргумент — это жестко закодированная дата «26 июля 2021 года», которая представляет собой base_date, определяющий конечную границу этого сегмента года. period_no = 0 — это последний аргумент, означающий, что функция не сравнивает год, предшествующие или следующие за сегментированным годом.
Любая транзакция, совершенная в период с 1 января по 26 июля, возвращает булев результат TRUE. Даты транзакций до 2021 года и после 26 июля 2021 года возвращают FALSE.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля previous_year_to_date, определяющего, какие транзакции совершены в течение полного года до сегмента года, который заканчивается 26 июля 2021 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
previous_year_to_date
Результирующая таблица
date
previous_year_to_date
01/13/2020
-1
02/26/2020
-1
03/27/2020
-1
04/16/2020
-1
05/21/2020
-1
06/14/2020
-1
08/07/2020
0
09/05/2020
0
01/22/2021
0
02/03/2021
0
03/17/2021
0
04/23/2021
0
05/04/2021
0
06/30/2021
0
07/26/2021
0
07/27/2021
0
06/06/2022
0
07/18/2022
0
11/14/2022
0
12/12/2022
0
Значение period_no равное -1 указывает, что функция inyeartodate () сравнивает сегмент входного года с предыдущим годом. При входной дате 26 июля 2021 г. сегмент с 1 января по 26 июля 2021 года изначально был определен как период текущего года до сегодняшнего дня. Затем period_no смещает этот сегмент на полный год назад, в результате чего границы диапазона дат переносятся на 1 января и 26 июля 2020 года.
Таким образом, любая транзакция, совершенная в период с 1 января по 26 июля, возвращает булев результат TRUE.
Пример 3. Аргумент first_month_of_year
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля in_year_to_date, которое определяет, какие транзакции совершены в течение того же года до 26 июля 2021 года.
В этом примере мы устанавливаем март в качестве первого месяца финансового года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_year_to_date
Результирующая таблица
date
in_year_to_date
01/13/2020
0
02/26/2020
0
03/27/2020
0
04/16/2020
0
05/21/2020
0
06/14/2020
0
08/07/2020
0
09/05/2020
0
01/22/2021
0
02/03/2021
0
03/17/2021
-1
04/23/2021
-1
05/04/2021
-1
06/30/2021
-1
07/26/2021
-1
07/27/2021
0
06/06/2022
0
07/18/2022
0
11/14/2022
0
12/12/2022
0
Используя 3 в качестве аргумента first_month_of_year в функции inyeartodate(), функция начинает год 1 марта. Затем base_date устанавливает дату окончания 26 июля 2021 года для этого сегмента года.
Таким образом, для любой транзакции, совершенной между 1 марта и 26 июля, возвращается булев результат TRUE, а для транзакций с датами вне этих границ — значение FALSE.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который определяет, какие транзакции совершены в том же году до 26 июля 2021 года, создается в качестве меры в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:date.
Создайте следующую меру:
=inyeartodate(date,'07/26/2021', 0)
Результирующая таблица
date
=inyeartodate(date,'07/26/2021', 0)
01/13/2020
0
02/26/2020
0
03/27/2020
0
04/16/2020
0
05/21/2020
0
06/14/2020
0
08/07/2020
0
09/05/2020
0
01/22/2021
-1
02/03/2021
-1
03/17/2021
-1
04/23/2021
-1
05/04/2021
-1
06/30/2021
-1
07/26/2021
-1
07/27/2021
0
06/06/2022
0
07/18/2022
0
11/14/2022
0
12/12/2022
0
Мера in_year_to_date создается в объекте диаграммы с помощью функции inyeartodate(). Первый предоставленный аргумент определяет, какое поле оценивается. Второй аргумент — это жестко закодированная дата «26 июля 2021 года», которая представляет собой base_date, определяющий конечную границу сопоставленного сегмента года. period_no = 0 — это последний аргумент, означающий, что функция не сравнивает год, предшествующие или следующие за сегментированным годом.
Любая транзакция, совершенная в период с 1 января по 26 июля 2021 года, возвращает булев результат TRUE. Даты транзакций до 2021 года и после 26 июля 2021 года возвращают FALSE.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу под именем Products
Информация об идентификаторе продукта, типе продукта дате изготовления и себестоимости.
Конечный пользователь хотел бы получить объект диаграммы, отображающий по типу продукта стоимость продуктов по типу продукта, произведенных в 2021 году до 26 июля.
Функция inyeartodate() возвращает логическое значение при проверки дат производства каждого продукта. Для любого продукта, изготовленного в 2021 году до 27 июля, функция inyeartodate() возвращает булево значение TRUE и суммирует cost_price.
Продукт D — единственный продукт, который также был произведен после 26 июля 2021 года. Запись с product_ID 8203 была изготовлена 27 декабря и стоила $25.12. Таким образом, эта стоимость не была включена в общую сумму продукта D в объекте диаграммы.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!