Эта функция определяет, находится ли введенная метка времени в том году, в котором находится дата последней загрузки скрипта, и возвращает значение True, если это так, и False если это не так.
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Если дополнительные параметры не используются, то значение данной функции может быть любой датой в пределах одного календарного года с 1 января до даты последнего выполнения скрипта включительно.
Другими словами, функция yeartodate() без дополнительных параметров используется для проверки метки времени и возвращает булево значение на основе того, произошла ли дата в календарном году до даты перезагрузки включительно.
Однако функция также может заменять начальную дату года с помощью аргумента firstmonth и, кроме того, выполнять сравнения с предшествующими или последующими годами с помощью аргумента yearoffset.
В заключение при использовании исторических наборов данных, функция yeartodate() передает параметр для настройки todaydate, в результате чего выполняется сравнение метки времени с календарным годом до даты, предоставленной в аргументе todaydate, включительно.
Аргументы
Аргумент
Описание
timestamp
Метка времени для проверки, например 10/12/2012.
yearoffset
При указании элемента yearoffset, элемент yeartodate возвращает значение True для того же периода в другом году. Отрицательное значение смещения yearoffset указывает предыдущий год, положительное значение смещения — будущий год. Наиболее поздняя дата с начала года до последнего момента достигается путем указания yearoffset = -1. Если значение не указано, принимается 0.
firstmonth
Если в поле firstmonth задать значение от 1 до 12 (1, если значение не указано), то начало года может быть передвинуто вперед на первый день любого месяца. Если, например, необходимо работать в рамках финансового года, начинающегося 1 мая, задайте firstmonth = 5. Значение 1 будет указывать начало финансового года с 1 января, а значение 12 — с 1 декабря.
todaydate
Задав значение todaydate (метка времени последнего выполнения скрипта, если не указано), можно сместить день, используемый в качестве верхней границы периода.
Когда это следует использовать
Функция yeartodate() возвращает результат в виде логического значения. Обычно этот тип функции используется в качестве условия в выражении IF. Это возвращает агрегирование или расчет в зависимости от того, попадает ли проверяемая дата в год до рассматриваемой даты перезагрузки приложения включительно.
Например, функцию YearToDate() можно использовать для идентификации всего оборудования, изготовленного в текущем году до текущей даты.
В следующих примерах предполагается время последней перезагрузки = 11/18/2011.
Примеры функции
Пример
Результат
yeartodate( '11/18/2010')
возвращает False
yeartodate( '02/01/2011')
возвращает True
yeartodate( '11/18/2011')
возвращает True
yeartodate( '11/19/2011')
возвращает False
yeartodate( '11/19/2011', 0, 1, '12/31/2011')
возвращает True
yeartodate( '11/18/2010', -1)
возвращает True
yeartodate( '11/18/2011', -1)
возвращает False
yeartodate( '04/30/2011', 0, 5)
возвращает False
yeartodate( '05/01/2011', 0, 5)
возвращает True
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Базовый пример
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций с 2020 по 2022 год, загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Создание поля year_to_date, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.
Текущая дата на момент создания — 26 апреля 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
year_to_date
Результирующая таблица
date
year_to_date
01/10/2020
0
02/28/2020
0
04/09/2020
0
04/16/2020
0
05/21/2020
0
08/14/2020
0
10/07/2020
0
12/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
12/27/2021
0
02/02/2022
-1
02/26/2022
-1
03/07/2022
-1
03/11/2022
-1
Поле «year_to_date» создано предшествующим оператором load с использованием функции yeartodate(), где в качестве аргумента функции передано поле date.
Так как функции yeartodate() не переданы дополнительные параметры, она сначала определяет дату перезагрузки и границы текущего календарного года (начало 1 января), которые будут возвращать булево значение TRUE.
Таким образом, любая транзакция, совершенная в период с 1 января по 26 апреля (дата перезагрузки), возвращает булев результат TRUE. Любая транзакция, совершенная до начала 2022 года, будет возвращать булев результат FALSE.
Пример 2. Аргумент yearoffset
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля two_years_prior, определяющего, какие транзакции совершены на два полных года раньше сегмента текущего календарного года до рассматриваемой даты.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
two_years_prior
Результирующая таблица
date
two_years_prior
01/10/2020
-1
02/28/2020
-1
04/09/2020
-1
04/16/2020
-1
05/21/2020
0
08/14/2020
0
10/07/2020
0
12/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
12/27/2021
0
02/02/2022
0
02/26/2022
0
03/07/2022
0
03/11/2022
0
Используя аргумент yearoffset = -2, функция yeartodate() сдвигает границы сравниваемого сегмента календарного года на два полных года. Первоначально сегмент года начинался 1 января и заканчивался 26 апреля 2022 года. Затем аргумент yearoffset сдвигает этот сегмент на два года назад. Таким образом границы сегмента переносятся на 1 января и 26 апреля 2020 года.
Таким образом, любая транзакция, совершенная в период с 1 января по 26 апреля 2020 года, возвращает булев результат TRUE. Все транзакции, совершенные до или после этого сегмента, возвращают FALSE.
Пример 3. Аргумент firstmonth
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля year_to_date, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.
В данном примере в качестве начала финансового года задано 1 июля.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
year_to_date
Результирующая таблица
date
year_to_date
01/10/2020
0
02/28/2020
0
04/09/2020
0
04/16/2020
0
05/21/2020
0
08/14/2020
0
10/07/2020
0
12/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
-1
12/27/2021
-1
02/02/2022
-1
02/26/2022
-1
03/07/2022
-1
03/11/2022
-1
Поскольку в этом примере используется аргумент firstmonth = 7, функция yeartodate() задает в качестве первого дня года 1 июля, а в качестве последнего дня года — 30 июня.
Таким образом, любая транзакция, совершенная в период с 1 июля 2021 года по 26 апреля 2022 года (дата перезагрузки), возвращает булев результат TRUE. Любая транзакция, совершенная до 1 июля 2021 года, будет возвращать булев результат FALSE.
Пример 4. Аргумент todaydate
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же набор данных и сценарий, что в первом примере.
Создание поля year_to_date, которое определяет, какие транзакции совершены в течение календарного года до даты последней перезагрузки.
Однако в этом примере требуется идентифицировать все транзакции, совершенные в течение календарного года до 1 марта 2022 года включительно.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
year_to_date
Результирующая таблица
date
year_to_date
01/10/2020
0
02/28/2020
0
04/09/2020
0
04/16/2020
0
05/21/2020
0
08/14/2020
0
10/07/2020
0
12/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
12/27/2021
0
02/02/2022
-1
02/26/2022
-1
03/07/2022
0
03/11/2022
0
В этом примере, так как используется аргумент todaydate = 03/01/2022, функция yeartodate() задает в качестве окончания сравниваемого сегмента календарного года 1 марта 2022 года. Критически важно предоставить параметр firstmonth (от 1 до 12); в противном случае функция вернет нулевые результаты (null).
Таким образом, любая транзакция, совершенная в период с 1 января по 1 марта 2022 года (параметр todaydate), возвращает булев результат TRUE. Любая транзакция, совершенная до 1 января 2022 года или после 1 марта 2022 года, будет возвращать булев результат FALSE.
Пример 5. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который определяет, какие транзакции совершены в календарном году до текущей даты, создается в качестве меры в объекте диаграммы в приложении.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.
Добавьте следующую меру:
=yeartodate(date)
Результирующая таблица
date
=yeartodate(date)
01/10/2020
0
02/28/2020
0
04/09/2020
0
04/16/2020
0
05/21/2020
0
08/14/2020
0
10/07/2020
0
12/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
12/27/2021
0
02/02/2022
-1
02/26/2022
-1
03/07/2022
-1
03/11/2022
-1
Мера year_to_date создается в объекте диаграммы с использованием функции yeartodate(), где в качестве аргумента функции передано поле date.
Так как функции yeartodate() не переданы дополнительные параметры, она сначала определяет дату перезагрузки и границы текущего календарного года (начало 1 января), которые будут возвращать булево значение TRUE.
Любая транзакция, совершенная в период с 1 января по 26 апреля (дата перезагрузки), возвращает булев результат TRUE. Любая транзакция, совершенная до начала 2022 года, будет возвращать булев результат FALSE.
Пример 6. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций с 2020 по 2022 год, загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Конечному пользователю требуется объект ключевого показателя эффективности (КПЭ), который представляет общие продажи за период 2021 года, эквивалентный периоду текущего года до текущей даты по состоянию на время последней перезагрузки.
Текущая дата на момент создания — 16 июня 2022 года.
Создайте объект ключевого показателя эффективности.
Чтобы рассчитать общий объем продаж, создайте следующую меру агрегирования:
=sum(if(yeartodate(date,-1),amount,0))
Задайте параметру Формат чисел меры значение Денежный.
Функция yeartodate() возвращает булево значение при проверке дат для каждого идентификатора транзакции. Так как перезагрузка выполнена 16 июня 2022 года, функция yeartodate рассматривает сегмент года с 01/01/2022 по 06/16/2022. Однако так как в функции использовался аргумент period_no = -1, эти границы затем переносятся на год назад. Поэтому для любой транзакции, совершенной с 01/01/2021 по 06/16/2021, функция yeartodate() возвращает булево значение TRUE и суммирует количество.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!