Эта функция определяет, находится ли метка времени в части месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия до последней миллисекунды, указанной в поле base_date, включительно. Также можно проследить, находится ли метка времени в предыдущем или в последующем временном периоде.
Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четыре месяца) или 6 (полугодие).
timestamp
Дата, которую необходимо сравнить со значением, указанным в поле base_date.
base_date
Дата, использующаяся для оценки периода.
period_no
Период можно сместить, задав значение в поле period_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие периоды, положительные — последующие.
first_month_of_year
Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year.
В функции inmonthstodate()base_date играет роль конечной точки определенного сегмента года, к которому он относится.
Например, если год разбит на сегменты по четыре месяца (треть года) и в качестве base_date задано 15 мая, любая метка времени с начала января до конца апреля будет возвращать булев результат FALSE. Даты с 1 по 15 мая будут возвращать значение TRUE. Остальные метки времени будут возвращать FALSE.
В качестве аргументов n_month в функции доступны следующие отрезки года.
Аргументы n_month
Период
Количество месяцев
месяц
1
два месяца
2
квартал
3
треть года
4
полгода
6
Когда это следует использовать
Функция inmonthstodate() возвращает результат в виде булева значения. Обычно этот тип функции используется в качестве условия в if expression. Используя функцию inmonthstodate(), можно выбрать период, который требуется оценить. Например, предоставление входной переменной, которая позволяет идентифицировать продукты, произведенные в месяце, квартале или полугодии определенного периода, вплоть до определенной даты.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. Изменение региональных настроек для создания приложений и скриптов.
Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.
Возвращает True, поскольку значение timestamp, 01/25/2013, находится в четырехмесячном периоде 01/01/2013 по 04/25/2013, в котором находится значение base_date, 04/25/2013.
inmonthstodate(4, '04/26/2013', '04/25/2006',
0)
Возвращает False, поскольку 04/26/2013 находится за пределами периода, указанного в предыдущем примере.
inmonthstodate(4, '09/25/2005', '02/01/2006',
-1)
Возвращает True, поскольку значение period_no, -1, сдвигает период поиска на один период из четырех месяцев назад (значение n-months), вследствие чего период поиска будет составлять промежуток с 01/09/2005 по 02/01/2006.
Возвращает True, поскольку для значения first_month_of_year задано 3, вследствие чего период поиска будет составлять промежуток с 03/01/2006 по 06/01/2006 вместо промежутка с 05/01/2006 по 06/01/2006.
Пример 1. Без дополнительных аргументов
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Поле даты, предоставленное в формате (MM/DD/YYYY) системной переменной DateFormat.
Предшествующий оператор load, который содержит следующее:
Функция inmonthstodate(), заданная в качестве поля ‘in_months_to_date’. Она определяет, какие транзакции совершены в квартале до 15 мая 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_months_to_date
Результирующая таблица
date
in_months_to_date
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
0
4/1/2022
-1
5/7/2022
-1
5/16/2022
0
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
Поле in_months_to_date создано в предыдущем операторе load с помощью функции inmonthstodate().
Первым предоставлен аргумент 3, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. Третий аргумент — это жестко закодированная дата 15 мая, которая представляет собой base_date, определяющий конечную границу сегмента. Заключительный аргумент — period_no = 0.
Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат TRUE. Для транзакций, даты которых не укладываются в этот период, возвращается значение FALSE.
Пример 2. Скрипт period_no
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
Однако в этом примере стоит задача создать поле previous_qtr_to_date, которое определяет, совершены ли транзакции за квартал до 15 мая.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
previous_qtr_to_date
Результирующая таблица
date
previous_qtr_to_date
1/7/2022
-1
1/19/2022
-1
2/5/2022
-1
2/28/2022
0
3/16/2022
0
4/1/2022
0
5/7/2022
0
5/16/2022
0
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
Используя -1 в качестве аргумента period_no, функция inmonthstodate() сдвигает границы сопоставляемого сегмента года на один квартал.
15 мая приходится на второй квартал года, поэтому этот сегмент изначально соответствует периоду с 1 апреля по 15 мая. Аргумент period_no сдвигает этот сегмент на три месяца назад. Границы диапазона дат переносятся на 1 января и 15 февраля.
Таким образом, любая транзакция, совершенная в период с 1 января по 15 февраля, возвращает булев результат TRUE.
Пример 3. Аргумент first_month_of_year
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
В этом примере политика организации устанавливает март в качестве первого месяца финансового года.
Создайте поле in_months_to_date, которое определяет, какие транзакции совершены в том же квартале до 15 мая 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_months_to_date
Результирующая таблица
date
previous_qtr_to_date
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
-1
4/1/2022
-1
5/7/2022
-1
5/16/2022
0
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
Так как используется 3 в качестве аргумента first_month_of_year, функция inmonthstodate() начинает год 1 марта и делит его на кварталы на основе первого переданного аргумента. Следовательно, имеются следующие квартальные сегменты:
Mar-May (март-май)
Jun-Aug (июнь-август)
Sep-Nov (сентябрь-ноябрь)
Dec-Feb (декабрь-февраль)
Аргумент base_date = 15 мая затем сегментирует квартал с марта по май, устанавливая для него конечную границу 15 мая.
Таким образом, для любой транзакции, совершенной между 1 марта и 15 мая, возвращается булев результат TRUE, а для транзакций с датами вне этих границ — значение FALSE.
Пример 4. Пример диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
В этом примере в приложение загружается неизмененный набор данных. Вычисление, которое определяет, совершены ли транзакции в том квартале, в который попадает 15 мая 2022 года, создается как мера в диаграмме приложения.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
date
Чтобы рассчитать, совершены ли транзакции в том же квартале, к которому относится 15 мая, создайте следующую меру:
=inmonthstodate(3,date,'05/15/2022', 0)
Результирующая таблица
date
=inmonthstodate(3,date,'05/15/2022', 0)
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
0
4/1/2022
-1
5/7/2022
-1
5/16/2022
0
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
Мера ‘in_months_to_date создается в диаграмме с помощью функции inmonthstodate().
Первым предоставлен аргумент 3, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. Третий аргумент — это жестко закодированная дата 15 мая, которая представляет собой base_date, определяющий конечную границу этого сегмента. Заключительный аргумент — period_no = 0.
Любая транзакция, совершенная в период с 1 апреля по 15 мая, возвращает булев результат TRUE. Даты транзакций за пределами этого сегмента будут возвращать FALSE.
Пример 5. Сценарий
Обзор
В этом примере набор данных загружается в таблицу под именем Sales. Данная таблица содержит следующие поля:
Product ID
Product Type
Sales date (Дата продажи)
Sales price (Стоимость продажи)
Конечному пользователю нужна диаграмма, в которой по типу продукта отображаются объемы продаж продукта за период, предшествующий 24 декабря 2022 года. Пользователю требуется возможность определить продолжительность этого периода.
Функция inmonthstodate() использует пользовательский ввод в качестве аргумента для определения размера начального сегмента года.
Функция передает дату продажи каждого продукта в качестве второго аргумента функции inmonthstodate(). В качестве третьего аргумента в функции inmonthstodate() используется 24 декабря, поэтому продукты, проданные в указанный период до 24 декабря включительно, возвращают булево значение TRUE. Функция sum суммирует продажи этих продуктов.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!