# monthsname Функция скрипта и диаграммы

Эта функция возвращает значение, представляющее диапазон месяцев периода (форматированного согласно переменным скрипта MonthNames), а также года. Базовое числовое значение соответствует метке времени первой миллисекунды месяца, двухмесячного периода, квартала, трети года (четыре месяца) или полугодия, содержащих базовую дату.

MonthsName(n\_months, date[, period\_no[, first\_month\_of\_year]])

Возвращаемые типы данных: Двойное значение

Диаграмма функции monthsname

Диаграмма функции monthsname

Диаграмма функции monthsname ![Example diagram showing the range of months  returned by the monthsname function, given a specific input date.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-general.png)

Функция `monthsname()` делит год на сегменты на основе предоставленного аргумента `n_months`. Затем она оценивает сегмент, к которому принадлежит каждый предоставленный элемент `date`, и возвращает названия начального и конечного месяцев этого сегмента, а также год. Функция также предоставляет возможность возвращать эти границы из предыдущих или следующих сегментов, а также переопределять первый месяц года.

В качестве аргументов `n_month` этой функции могут использоваться следующие сегменты года.

Возможные аргументы `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.' В этом и других примерах SETMonthnames оператор установлен на Jan;Feb;Mar, и так далее. |
| `monthsname(4, '10/19/2013', -1)` | Возвращает 'May-Aug 2013'. |
| ` monthsname(4, '10/19/2013', 0, 2)  ` | Возвращает Oct-Jan 2014, так как указанный год начинается с месяца 2. Поэтому четырехмесячный период заканчивается в первом месяце следующего года. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.

Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому вы обращаетесь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в Qlik Sense интерфейсе пользователя. Qlik Sense будет отображаться на том же языке, что и используемый вами браузер.

## Пример 1. Базовый пример

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthsname.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем `Transactions`.

* Поле даты было предоставлено в формате `DateFormat` системной переменной (ММ/ДД/ГГГГ).

* Создание поля `bi_monthly_range`, которое группирует транзакции в двухмесячные сегменты и возвращает имена границ этого сегмента для каждой транзакции.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        monthsname(2,date) as bi_monthly_range
        ;
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `date`

* `bi_monthly_range`

Результирующая таблица

| date | двухмесячный\_диапазон |
| --- | --- |
| 19.02.2022 | Янв-Фев 2022 |
| 7.03.2022 | Март-Апр 2022 |
| 3/30/2022 | Март-Апр 2022 |
| 4/5/2022 | Март-Апр 2022 |
| 4/16/2022 | Март-Апр 2022 |
| 01.05.2022 | Май-Июнь 2022 |
| 5/7/2022 | Май-Июнь 2022 |
| 5/22/2022 | Май-Июнь 2022 |
| 6/15/2022 | Май-Июнь 2022 |
| 6/26/2022 | Май-Июнь 2022 |
| 7/9/2022 | Июль-Август 2022 |
| 7/22/2022 | Июль-Август 2022 |
| 7/23/2022 | Июль-Август 2022 |
| 7/27/2022 | Июль-Август 2022 |
| 8/2/2022 | Июль-Август 2022 |
| 8/8/2022 | Июль-Август 2022 |
| 8/19/2022 | Июль-Август 2022 |
| 9/26/2022 | Сент.-Окт. 2022 |
| 10/14/2022 | Сент.-Окт. 2022 |
| 10/29/2022 | Сент.-Окт. 2022 |

Поле `bi_monthly_range` создано в предшествующем операторе load с помощью функции `monthsname()`. Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.

Диаграмма функции monthsname, базовый пример

Диаграмма функции monthsname, базовый пример

Диаграмма функции monthsname, базовый пример ![Diagram showing the results of using the monthsname function to determine the range of months within which a transaction took place. In this case, it determines that transaction number 8195, which took place on May 22, will return the value indicating a range of May to June 2022.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-basic-example.png)

Транзакция 8195 совершена 22 мая. Функция `monthsname()` изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. Поэтому функция возвращает эти месяцы в формате системной переменной `MonthNames`, а также год: May-Jun 2022.

## Пример 2. Скрипт period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthsname.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же встроенный набор данных и сценарий, что в первом примере.

* Создание поля `prev_bi_monthly_range`, которое группирует транзакции в двухмесячные сегменты и возвращает имена границ этого сегмента для каждой транзакции.

Добавьте сюда другой текст, если необходимо, со списками и т. д.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        MonthsName(2,date,-1) as prev_bi_monthly_range
        ;
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `date`

* `prev_bi_monthly_range`

Результирующая таблица

| date | диапазон\_предыдущих\_двух\_месяцев |
| --- | --- |
| 19.02.2022 | Нояб-Дек 2021 |
| 7.03.2022 | Янв-Фев 2022 |
| 3/30/2022 | Янв-Фев 2022 |
| 4/5/2022 | Янв-Фев 2022 |
| 4/16/2022 | Янв-Фев 2022 |
| 01.05.2022 | Март-Апр 2022 |
| 5/7/2022 | Март-Апр 2022 |
| 5/22/2022 | Март-Апр 2022 |
| 6/15/2022 | Март-Апр 2022 |
| 6/26/2022 | Март-Апр 2022 |
| 7/9/2022 | Май-Июнь 2022 |
| 7/22/2022 | Май-Июнь 2022 |
| 7/23/2022 | Май-Июнь 2022 |
| 7/27/2022 | Май-Июнь 2022 |
| 8/2/2022 | Май-Июнь 2022 |
| 8/8/2022 | Май-Июнь 2022 |
| 8/19/2022 | Май-Июнь 2022 |
| 9/26/2022 | Июль-Август 2022 |
| 10/14/2022 | Июль-Август 2022 |
| 10/29/2022 | Июль-Август 2022 |

В этом примере -1 используется в качестве аргумента `period_no` в функции `monthsname()`. Первоначально разделив год на двухмесячные сегменты, функция затем возвращает границы предыдущего сегмента для момента, когда происходит транзакция.

Диаграмма функции monthsname, пример с аргументом period\_no

Диаграмма функции monthsname, пример с аргументом period\_no

Диаграмма функции monthsname, пример с аргументом period\_no ![Diagram showing the results of using the monthsname function to determine the range of months within which a transaction took place. The period_no is set at -1. Transaction number 8195, which took place between May and June, will return the value indicating a range of March to April 2022.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-period-no.png)

Транзакция 8195 совершена в сегменте с мая по июнь. Таким образом, предыдущий двухмесячный сегмент начинался 1 марта и заканчивался 30 апреля, поэтому функция возвращает Mar-Apr 2022.

## Пример 3. Аргумент first\_month\_of\_year

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthsname.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же встроенный набор данных и сценарий, что в первом примере.

* Создание другого поля, `bi_monthly_range`, которое группирует транзакции в двухмесячные сегменты и возвращает границы сегментов для каждой транзакции.

Однако в этом примере нам также нужно задать апрель в качестве первого месяца финансового года.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';
						
Transactions:
    Load
        *,
        MonthsName(2,date,0,4) as bi_monthly_range
        ;
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `date`

* `bi_monthly_range`

Результирующая таблица

| date | двухмесячный\_диапазон |
| --- | --- |
| 19.02.2022 | Февраль-Март 2021 |
| 7.03.2022 | Февраль-Март 2021 |
| 3/30/2022 | Февраль-Март 2021 |
| 4/5/2022 | Apr-May 2022 |
| 4/16/2022 | Apr-May 2022 |
| 01.05.2022 | Apr-May 2022 |
| 5/7/2022 | Apr-May 2022 |
| 5/22/2022 | Apr-May 2022 |
| 6/15/2022 | Июнь-Июль 2022 |
| 6/26/2022 | Июнь-Июль 2022 |
| 7/9/2022 | Июнь-Июль 2022 |
| 7/22/2022 | Июнь-Июль 2022 |
| 7/23/2022 | Июнь-Июль 2022 |
| 7/27/2022 | Июнь-Июль 2022 |
| 8/2/2022 | Авг-Сен 2022 |
| 8/8/2022 | Авг-Сен 2022 |
| 8/19/2022 | Авг-Сен 2022 |
| 9/26/2022 | Авг-Сен 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.

Диаграмма функции monthsname, пример с аргументом first\_month\_of\_year

Диаграмма функции monthsname, пример с аргументом first\_month\_of\_year

Диаграмма функции monthsname, пример с аргументом first\_month\_of\_year ![Diagram showing the results of using the monthsname function to determine the range of months within which a transaction took place. Since the year is set to begin on April 1, transaction number 8195 will return a value indicating a range of April to May 2022.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-first-month-of-year.png)

## Пример 4. Пример объекта диаграммы

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthsname.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит тот же встроенный набор данных и сценарий, что в первом примере. Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, который группирует транзакции в двухмесячные сегменты и возвращает границы сегментов для каждой транзакции, создается как мера в объекте диаграммы приложения.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:date.

Создайте следующую меру:

=monthsname(2,date)

Результирующая таблица

| date | =monthsname(2,date) |
| --- | --- |
| 19.02.2022 | Янв-Фев 2022 |
| 7.03.2022 | Март-Апр 2022 |
| 3/30/2022 | Март-Апр 2022 |
| 4/5/2022 | Март-Апр 2022 |
| 4/16/2022 | Март-Апр 2022 |
| 01.05.2022 | Май-Июнь 2022 |
| 5/7/2022 | Май-Июнь 2022 |
| 5/22/2022 | Май-Июнь 2022 |
| 6/15/2022 | Май-Июнь 2022 |
| 6/26/2022 | Май-Июнь 2022 |
| 7/9/2022 | Июль-Август 2022 |
| 7/22/2022 | Июль-Август 2022 |
| 7/23/2022 | Июль-Август 2022 |
| 7/27/2022 | Июль-Август 2022 |
| 8/2/2022 | Июль-Август 2022 |
| 8/8/2022 | Июль-Август 2022 |
| 8/19/2022 | Июль-Август 2022 |
| 9/26/2022 | Сент.-Окт. 2022 |
| 10/14/2022 | Сент.-Окт. 2022 |
| 10/29/2022 | Сент.-Окт. 2022 |

Поле bi\_monthly\_range создается как мера в объекте диаграммы с помощью функции monthsname(). Первый предоставленный аргумент имеет значение 2, что делит год на двухмесячные сегменты. Второй аргумент определяет, какое поле оценивается.

Диаграмма функции monthsname, пример с объектом диаграммы

Диаграмма функции monthsname, пример с объектом диаграммы

Диаграмма функции monthsname, пример с объектом диаграммы ![Diagram showing the results of using the monthsname function with a chart object. Like the other examples, the function is used to determine the range of months within which a transaction took place. Transaction number 8195 returns a value of May-Jun 2022.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-chart-object.png)

Транзакция 8195 совершена 22 мая. Функция monthsname() изначально делит год на двухмесячные сегменты. Транзакция 8195 попадает в сегмент с 1 мая по 30 июня. Поэтому функция возвращает эти месяцы в формате системной переменной MonthNames, а также год: May-Jun 2022.

## Пример 5. Сценарий

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/monthsname.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.

* Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).

Конечному пользователю требуется объект диаграммы, отображающий общий объем продаж за выбранный им период. Этого можно добиться, даже если это измерение недоступно в модели данных, используя функцию monthsname() в качестве вычисляемого измерения, которое динамически изменяется с помощью элемента управления вводом переменной.

Скрипт загрузки

```
SET vPeriod = 1;
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/7/2022',17.17
8189,'1/19/2022',37.23
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
```

Результаты

Загрузите данные и откройте лист.

В начале скрипта загрузки создана переменная (vPeriod), которая будет привязана к элементу управления вводом переменной. Затем настройте переменную как настраиваемый объект на листе.

Выполните следующие действия.

1. На панели ресурсов щелкните Диаграммы.

2. В разделе Объекты панели мониторинга перетащите Ввод переменной на лист.

3. Введите заголовок для объекта диаграммы.

4. В разделе Переменная выберите vPeriod в качестве имени и задайте для отображения объект Раскрывающийся список.

5. В разделе Значения настройте для объекта использование динамических значений. Введите следующее:

   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'

Затем создайте таблицу результатов.

Выполните следующие действия.

1. Создайте новую таблицу и добавьте следующее вычисляемое измерение:

   =monthsname($(vPeriod),date)

2. Добавьте эту меру для расчета общего объема продаж:

   =sum(amount)

3. Задайте параметру меры Формат чисел значение Денежный. Щелкните the Изменение завершено icon. Теперь можно модифицировать данные, показанные в таблице, изменив сегмент времени в объекте переменной.

Вот как будет выглядеть таблица результатов при выборе варианта tertial:

Результирующая таблица

| monthsname($(vPeriod),date) | sum(amount) |
| --- | --- |
| Янв-Апр 2022 | 253.89 |
| Май-август 2022 г. | 713.58 |
| Сен-Дек 2022 | 248.12 |