Эта функция возвращает значение, представляющее диапазон месяцев периода (форматированного согласно переменным скрипта MonthNames), а также года. Базовое числовое значение соответствует метке времени первой миллисекунды месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия, содержащих базовую дату.
Функция monthsname() делит год на сегменты на основе предоставленного аргумента n_months. Затем она оценивает сегмент, к которому принадлежит каждый предоставленный элемент date, и возвращает названия начального и конечного месяцев этого сегмента, а также год. Функция также предоставляет возможность возвращать эти границы из предыдущих или следующих сегментов, а также переопределять первый месяц года.
В качестве аргументов n_month в функции доступны следующие отрезки года.
Возможные аргументы n_month
Периоды
Количество месяцев
месяц
1
два месяца
2
квартал
3
четыре месяца
4
полгода
6
Аргументы
Аргумент
Описание
n_months
Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четыре месяца) или 6 (полугодие).
date
Дата или метка времени для вычисления.
period_no
Период можно сместить, задав значение в поле period_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие периоды, положительные — последующие.
first_month_of_year
Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year.
Когда это следует использовать
Функция monthsname() полезна, когда требуется предоставить пользователю возможность сравнивать агрегации по выбранному ими периоду. Например, вы можете указать входную переменную, чтобы пользователь мог просматривать общий объем продаж продуктов по месяцам, кварталам или полугодиям.
Эти измерения можно создать либо в скрипте загрузки, добавив функцию в виде поля в таблицу основного календаря или же создав измерение непосредственно в диаграмме как вычисляемое измерение.
Примеры функции
Пример
Результат
monthsname(4, '10/19/2013')
Возвращает Sep-Dec 2013. В этом и других примерах оператору SET Monthnames задается Jan;Feb;Mar и так далее.
monthsname(4, '10/19/2013', -1)
Возвращает May-Aug 2013.
monthsname(4, '10/19/2013', 0, 2)
Возвращает Oct-Jan 2014, так как указанный год начинается с месяца 2. Поэтому четырехмесячный период заканчивается в первом месяце следующего года.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Базовый пример
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Создание поля bi_monthly_range, которое группирует транзакции в двухмесячные сегменты и возвращает имена границ этого сегмента для каждой транзакции.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
bi_monthly_range
Результирующая таблица
date
bi_monthly_range
2/19/2022
Jan-Feb 2022
3/7/2022
Mar-Apr 2022
3/30/2022
Mar-Apr 2022
4/5/2022
Mar-Apr 2022
4/16/2022
Mar-Apr 2022
5/1/2022
May-Jun 2022
5/7/2022
May-Jun 2022
5/22/2022
May-Jun 2022
6/15/2022
May-Jun 2022
6/26/2022
May-Jun 2022
7/9/2022
Jul-Aug 2022
7/22/2022
Jul-Aug 2022
7/23/2022
Jul-Aug 2022
7/27/2022
Jul-Aug 2022
8/2/2022
Jul-Aug 2022
8/8/2022
Jul-Aug 2022
8/19/2022
Jul-Aug 2022
9/26/2022
Sep-Oct 2022
10/14/2022
Sep-Oct 2022
10/29/2022
Sep-Oct 2022
Поле bi_monthly_range создано в предыдущем операторе load с помощью функции monthsname(). Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.
Транзакция 8195 совершена 22 мая. Функция monthsname() изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. Поэтому функция возвращает эти месяцы в формате системной переменной MonthNames, а также год: May-Jun 2022.
Пример 2. Скрипт period_no
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же встроенный набор данных и сценарий, что в первом примере.
Создание поля prev_bi_monthly_range, которое группирует транзакции в двухмесячные сегменты и возвращает имена границ этого сегмента для каждой транзакции.
Добавьте сюда другой текст, если необходимо, со списками и т. д.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
prev_bi_monthly_range
Результирующая таблица
date
prev_bi_monthly_range
2/19/2022
Nov-Dec 2021
3/7/2022
Jan-Feb 2022
3/30/2022
Jan-Feb 2022
4/5/2022
Jan-Feb 2022
4/16/2022
Jan-Feb 2022
5/1/2022
Mar-Apr 2022
5/7/2022
Mar-Apr 2022
5/22/2022
Mar-Apr 2022
6/15/2022
Mar-Apr 2022
6/26/2022
Mar-Apr 2022
7/9/2022
May-Jun 2022
7/22/2022
May-Jun 2022
7/23/2022
May-Jun 2022
7/27/2022
May-Jun 2022
8/2/2022
May-Jun 2022
8/8/2022
May-Jun 2022
8/19/2022
May-Jun 2022
9/26/2022
Jul-Aug 2022
10/14/2022
Jul-Aug 2022
10/29/2022
Jul-Aug 2022
В этом примере -1 используется в качестве аргумента period_no в функции monthsname(). Первоначально разделив год на двухмесячные сегменты, функция затем возвращает границы предыдущего сегмента для момента, когда происходит транзакция.
Транзакция 8195 совершена в сегменте с мая по июнь. Таким образом, предыдущий двухмесячный сегмент начинался 1 марта и заканчивался 30 апреля, поэтому функция возвращает Mar-Apr 2022.
Пример 3. Аргумент first_month_of_year
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Используется тот же встроенный набор данных и сценарий, что в первом примере.
Создание другого поля, bi_monthly_range, которое группирует транзакции в двухмесячные сегменты и возвращает границы сегментов для каждой транзакции.
Однако в этом примере нам также нужно задать апрель в качестве первого месяца финансового года.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
date
bi_monthly_range
Результирующая таблица
date
bi_monthly_range
2/19/2022
Feb-Mar 2021
3/7/2022
Feb-Mar 2021
3/30/2022
Feb-Mar 2021
4/5/2022
Apr-May 2022
4/16/2022
Apr-May 2022
5/1/2022
Apr-May 2022
5/7/2022
Apr-May 2022
5/22/2022
Apr-May 2022
6/15/2022
Jun-Jul 2022
6/26/2022
Jun-Jul 2022
7/9/2022
Jun-Jul 2022
7/22/2022
Jun-Jul 2022
7/23/2022
Jun-Jul 2022
7/27/2022
Jun-Jul 2022
8/2/2022
Aug-Sep 2022
8/8/2022
Aug-Sep 2022
8/19/2022
Aug-Sep 2022
9/26/2022
Aug-Sep 2022
10/14/2022
Oct-Nov 2022
10/29/2022
Oct-Nov 2022
Так как используется 4 в качестве аргумента first_month_of_year в функции monthsname(), функция начинает год 1 апреля, а затем делит год на двухмесячные сегменты. Apr-May,Jun-Jul,Aug-Sep,Oct-Nov,Dec-Jan,Feb-Mar.
Текст абзаца для результатов.
Транзакция 8195 состоялась 22 мая и попадает в сегмент с 1 апреля по 31 мая. Поэтому функция возвращает Apr-May 2022.
Пример 4. Пример объекта диаграммы
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит тот же встроенный набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который группирует транзакции в двухмесячные сегменты и возвращает границы сегментов для каждой транзакции, создается как мера в объекте диаграммы приложения.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:date.
Создайте следующую меру:
=monthsname(2,date)
Результирующая таблица
date
=monthsname(2,date)
2/19/2022
Jan-Feb 2022
3/7/2022
Mar-Apr 2022
3/30/2022
Mar-Apr 2022
4/5/2022
Mar-Apr 2022
4/16/2022
Mar-Apr 2022
5/1/2022
May-Jun 2022
5/7/2022
May-Jun 2022
5/22/2022
May-Jun 2022
6/15/2022
May-Jun 2022
6/26/2022
May-Jun 2022
7/9/2022
Jul-Aug 2022
7/22/2022
Jul-Aug 2022
7/23/2022
Jul-Aug 2022
7/27/2022
Jul-Aug 2022
8/2/2022
Jul-Aug 2022
8/8/2022
Jul-Aug 2022
8/19/2022
Jul-Aug 2022
9/26/2022
Sep-Oct 2022
10/14/2022
Sep-Oct 2022
10/29/2022
Sep-Oct 2022
Поле bi_monthly_range создается как мера в объекте диаграммы с помощью функции monthsname(). Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.
Транзакция 8195 совершена 22 мая. Функция monthsname() изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. Поэтому функция возвращает эти месяцы в формате системной переменной MonthNames, а также год: May-Jun 2022.
Пример 5. Сценарий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, содержащий набор транзакций за 2022 год, загружается в таблицу под именем Transactions.
Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).
Конечному пользователю требуется объект диаграммы, отображающий общий объем продаж за выбранный им период. Этого можно добиться, даже если это измерение недоступно в модели данных, используя функцию monthsname() в качестве вычисляемого измерения, которое динамически изменяется с помощью элемента управления вводом переменной.
В начале скрипта загрузки создана переменная (vPeriod), которая будет привязана к элементу управления вводом переменной. Затем настройте переменную как настраиваемый объект на листе.
Выполните следующие действия.
На панели ресурсов щелкните Пользовательские объекты.
Выберите Qlik Dashboard bundleи создайте объект Ввод переменной.
Введите заголовок для объекта диаграммы.
В разделе Переменная выберите vPeriod в качестве имени и задайте для отображения объект Раскрывающийся список.
В разделе Значения настройте для объекта использование динамических значений. Введите следующее:
Создайте новую таблицу и добавьте следующее вычисляемое измерение:
=monthsname($(vPeriod),date)
Добавьте эту меру для расчета общего объема продаж:
=sum(amount)
Задайте параметру меры Формат чисел значение Денежный. Щелкните Изменение завершено. Теперь можно модифицировать данные, показанные в таблице, изменив сегмент времени в объекте переменной.
Вот как будет выглядеть таблица результатов при выборе варианта tertial:
Результирующая таблица
monthsname($(vPeriod),date)
sum(amount)
Jan-Apr 2022
253.89
Май-август 2022 г.
713.58
Sep-Dec 2022
248.12
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!