Эта функция определяет, находится ли метка времени базовой даты в части месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия. Также можно проследить, находится ли метка времени в предыдущем или в последующем временном периоде.
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Функция inmonths() делит год на сегменты на основе предоставленного аргумента n_months. Затем она определяет, относится ли каждая оцениваемая метка времени к тому же сегменту, что аргумент base_date. Однако если передан аргумент period_no, функция определяет, попадают ли метки времени в предыдущий или следующий период относительно base_date.
В качестве аргументов n_month в функции доступны следующие отрезки года.
Аргументы n_month
Период
Количество месяцев
месяц
1
два месяца
2
квартал
3
четыре месяца
4
полгода
6
Когда это следует использовать
Функция inmonths() возвращает результат в виде булева значения. Обычно этот тип функции используется в качестве условия в if expression. Используя функцию inmonths(), можно выбрать период, который требуется оценить. Например, это дает возможность идентифицировать продукты, произведенные в месяце, квартале или полугодии определенного периода.
Возвращаемые типы данных: Булево значение
В Qlik Sense логическое значение «истина» представлено как -1, а «ложь» — как 0.
Аргументы
Аргумент
Описание
n_months
Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 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.
Можно использовать следующие значения, чтобы задать первый месяц года в аргументе first_month_of_year:
значения first_month_of_year
Месяц
Значение
Февраль
2
Март
3
Апрель
4
May
5
Июнь
6
Июль
7
Август
8
Сентябрь
9
Октябрь
10
Ноябрь
11
Декабрь
12
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Примеры функции
Пример
Результат
inmonths(4, '01/25/2013', '04/25/2013', 0)
Возвращает TRUE. Поскольку значение timestamp, 01/25/2013, находится в четырехмесячном периоде с 01/01/2013 по 04/30/2013, в котором находится значение base_date, 04/25/2013.
inmonths(4, '05/25/2013', '04/25/2013', 0)
Возвращает FALSE. Поскольку 05/25/2013 находится за пределами периода, указанного в предыдущем примере.
inmonths(4, '11/25/2012', '02/01/2013', -1 )
Возвращает TRUE. Поскольку значение period_no, -1, сдвигает период поиска на один период из четырех месяцев назад (значение n-months), вследствие чего период поиска будет составлять промежуток с 09/01/2012 по 12/31/2012.
inmonths(4, '05/25/2006', '03/01/2006', 0, 3)
Возвращает TRUE. Возвращает first_month_of_year, так как значение равно 3, в результате чего период поиска длится с 03/01/2006 по 07/30/2006, а не с 01/01/2006 по 04/30/2006.
Пример 1. Без дополнительных аргументов
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Предыдущая загрузка с дополнительной переменной 'in_months', которая определяет, совершены ли транзакции в том же квартале, к которому относится 15 мая 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_months
Результирующая таблица
date
in_months
2/19/2022
0
3/7/2022
0
3/30/2022
0
4/5/2022
-1
4/16/2022
-1
5/1/2022
-1
5/7/2022
-1
5/22/2022
-1
6/15/2022
-1
6/26/2022
-1
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 создано в предыдущем операторе load с помощью функции inmonths(). Первым предоставлен аргумент 3, который делит год на квартальные сегменты. Второй аргумент определяет, какое поле оценивается. В данном примере это поле даты. Третий аргумент — это жестко закодированная дата 15 мая, которая является base_date, а period_no = 0 является заключительным аргументом.
Май попадает во второй квартал года. Поэтому все транзакции, которые совершаются с 1 апреля по 30 июня будут возвращать булев результат TRUE. Это можно проверить в таблице результатов.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Предыдущая загрузка с дополнительной переменной 'previous_quarter', которая определяет, совершены ли транзакции в квартале до 15 мая 2022 года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
previous_quarter
Результирующая таблица
date
previous quarter
2/19/2022
-1
3/7/2022
-1
3/30/2022
-1
4/5/2022
0
4/16/2022
0
5/1/2022
0
5/7/2022
0
5/22/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 в функции inmonths(). 15 мая является base_date и попадает во второй квартал года (апрель-июнь).
Таким образом, любая транзакция, совершенная в период с января по март, возвращает булев результат TRUE.
Пример 3. Аргумент first_month_of_year
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загруженный в таблицу под именем Transactions.
Предыдущая загрузка с дополнительной переменной 'in_months', которая определяет, совершены ли транзакции в том же квартале, к которому относится 15 мая 2022 года.
В этом примере политика организации устанавливает март в качестве первого месяца финансового года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
in_months
Результирующая таблица
date
in_months
2/19/2022
0
3/7/2022
-1
3/30/2022
-1
4/5/2022
-1
4/16/2022
-1
5/1/2022
-1
5/7/2022
-1
5/22/2022
-1
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 в функции inmonths(), функция начинает год 1 марта. Затем функция inmonths() делит год на кварталы: Mar-May (март-май), Jun-Aug (июнь-август), Sep-Nov (сентябрь-ноябрь), Dec-Feb (декабрь-февраль). Таким образом, 15 мая попадает в первый квартал года (март-май).
Любая транзакция, совершенная в эти месяцы, будет возвращать булев результат TRUE.
Пример 4. Пример объекта диаграммы
Обзор
Используется тот же набор данных и сценарий, что в первом примере.
Однако в этом примере в приложение загружается неизмененный набор данных. Вычисление, которое определяет, совершены ли транзакции в том квартале, в который попадает 15 мая 2022 года, создается как мера в диаграмме приложения.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
date
Чтобы рассчитать, совершены ли транзакции в том же квартале, к которому относится 15 мая, создайте следующую меру:
=inmonths(3,date,'05/15/2022', 0)
Результирующая таблица
date
=inmonths(3,date,'05/15/2022', 0)
2/19/2022
0
3/7/2022
0
3/30/2022
0
4/5/2022
-1
4/16/2022
-1
5/1/2022
-1
5/7/2022
-1
5/22/2022
-1
6/15/2022
-1
6/26/2022
-1
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 создается в диаграмме с помощью функции inmonths(). Первым предоставлен аргумент 3, который делит год на кварталы. Второй аргумент определяет, какое поле оценивается. В данном примере это поле даты. Третий аргумент — это жестко закодированная дата 15 мая, которая является base_date, а period_no = 0 является заключительным аргументом.
Май попадает во второй квартал года. Поэтому все транзакции, которые совершаются с 1 апреля по 30 июня будут возвращать булев результат TRUE. Это можно проверить в таблице результатов.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, загруженный в таблицу под именем Products.
Данная таблица содержит следующие поля:
product ID (ИД продукта)
product type (тип продукта)
manufacture date (дата изготовления)
cost price (себестоимость)
Конечному пользователю нужна диаграмма, отображающая по типу продукта стоимость продуктов, произведенных в первом сегмента 2021 года. Пользователю требуется возможность определить продолжительность этого сегмента.
Функция inmonths() использует пользовательский ввод в качестве аргумента для определения размера начального сегмента года. Функция передает дату изготовления каждого продукта в качестве второго аргумента функции inmonths(). Так как 1 января используется в качестве третьего аргумента функции inmonths(), продукты, дата изготовления которых попадает в начальный сегмент года, возвращают булево значение TRUE и поэтому функция sum будет суммировать стоимость этих продуктов.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!