# monthsname スクリプトおよびチャート関数

この関数は、期間の月の範囲 (MonthNames スクリプト変数に従った書式で表示) および年を表す表示値を返します。基底値は、ベース日付を含む月、2 か月、四半期、4 か月、半年のいずれかの期間の最初のミリ秒のタイムスタンプに相当する値です。

構文:

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

戻り値データ型： デュアル

monthsname 関数の図

monthsname 関数の図

monthsname 関数の図 ![特定の入力日付を指定して、monthsname 関数によって返される月の範囲を示す図の例。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-general.png)

`monthsname()` 関数は、指定された `n_months` 引数に基づいて年をセグメントに分割します。次に、提供された各 `date` が属するセグメントを評価し、そのセグメントの開始月名と終了月名、および年を返します。この関数には、前後のセグメントからこれらの境界を返したり、年の最初の月を再定義したりする機能もあります。

次の年のセグメントは、 `n_month` 引数として関数で使用できます。

考えられる `n_month`n\_month 引数

| 期間 | 月数 |
| --- | --- |
| 月 | 1 |
| 隔月 | 2 |
| 四半期 | 3 |
| 4 か月 | 4 |
| 半年 | 6 |

引数

| 引数 | 説明 |
| --- | --- |
| n\_months | 期間を定義する月数。整数、または計算結果が整数になる数式で次のうちのいずれかでなければならない。1 (inmonth() 関数と同機能)、2 (2 か月)、3 (inquarter() 関数と同機能)、4 (4 か月)、6 (半年)。 |
| date | 評価する日付またはタイムスタンプ。 |
| period\_no | 期間は、period\_no、整数、計算結果が整数になる数式を使用して補正できます。値 0 は base\_date を含む期間を示します。period\_no の値が負の場合は過去の期間を、正の場合は将来の期間を示します。 |
| first\_month\_of\_year | 事業年度が 1 月以外の月に始まる場合は、first\_month\_of\_year で 2 から 12 の間の値を指定します。 |

## monthsname の使用目的

`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)  ` | 年は月 2で始まるように指定されているため、「Oct-Jan 2014」を返します。そのため、この 4 か月の期間は次の年の最初の月に終了します。 |

## リージョンの設定

特に指定のない限り、このトピックの例では MM/DD/YYYY の日付書式を使用しています。 日付書式は、データ ロード スクリプトの `SET DateFormat` ステートメントで指定されています。既定の日付書式は、リージョンの設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「[アプリケーションとスクリプトの地域設定の変更](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)」を参照してください。

アプリケーションの既定のリージョン設定は、ユーザー プロファイルに基づいています。これらのリージョンの書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。

アプリケーションの作成者は、作成するアプリケーションの既定のリージョンを設定できます。詳細については、「[Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)」を参照してください。

## 例 1 – 基本的な例

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `Transactions` というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。

* `DateFormat` システム変数形式 (MM/DD/YYYY) で提供されている日付項目。

* トランザクションを 2 か月のセグメントにグループ化し、トランザクションごとにそのセグメントの境界名を返す項目 [`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 | bi\_monthly\_range |
| --- | --- |
| 2/19/2022 | 2022 年 1 月～2 月 |
| 3/7/2022 | 2022 年 3 月～4 月 |
| 3/30/2022 | 2022 年 3 月～4 月 |
| 4/5/2022 | 2022 年 3 月～4 月 |
| 4/16/2022 | 2022 年 3 月～4 月 |
| 5/1/2022 | 2022 年 5 月～6 月 |
| 5/7/2022 | 2022 年 5 月～6 月 |
| 5/22/2022 | 2022 年 5 月～6 月 |
| 6/15/2022 | 2022 年 5 月～6 月 |
| 6/26/2022 | 2022 年 5 月～6 月 |
| 7/9/2022 | 2022 年 7 月～8 月 |
| 7/22/2022 | 2022 年 7 月～8 月 |
| 7/23/2022 | 2022 年 7 月～8 月 |
| 7/27/2022 | 2022 年 7 月～8 月 |
| 8/2/2022 | 2022 年 7 月～8 月 |
| 8/8/2022 | 2022 年 7 月～8 月 |
| 8/19/2022 | 2022 年 7 月～8 月 |
| 9/26/2022 | 2022 年 9 月～10 月 |
| 10/14/2022 | 2022 年 9 月～10 月 |
| 10/29/2022 | 2022 年 9 月～10 月 |

[`bi_monthly_range`] 項目は、`monthsname()` 関数を使用して、先行する LOAD ステートメントで作成されます。提供される最初の引数は 2 で、年を 2 か月のセグメントに分割します。2 番目の引数は、評価される項目を識別します。

monthsname 関数の図、基本的な例

monthsname 関数の図、基本的な例

monthsname 関数の図、基本的な例 ![monthsname 関数を使用してトランザクションが発生した月範囲を特定した結果を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-basic-example.png)

トランザクション 8195 は 5 月 22 日に発生します。 `` 関数は、最初に年を 2 か月のセグメントに分割します。monthsname() トランザクション 8195 は、5 月 1 日～6 月 30 日のセグメントに分類されます。したがって、この関数はこれらの月を `MonthNames` システム変数形式で返し、2022 年 5 月～6 月の年も返します。

## 例 2 – period\_no

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 最初の例と同じ inline データセットとシナリオ。

* トランザクションを 2 か月のセグメントにグループ化し、トランザクションごとに前のセグメントの境界名を返す項目 [`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 | prev\_bi\_monthly\_range |
| --- | --- |
| 2/19/2022 | 2021 年 11 月～12 月 |
| 3/7/2022 | 2022 年 1 月～2 月 |
| 3/30/2022 | 2022 年 1 月～2 月 |
| 4/5/2022 | 2022 年 1 月～2 月 |
| 4/16/2022 | 2022 年 1 月～2 月 |
| 5/1/2022 | 2022 年 3 月～4 月 |
| 5/7/2022 | 2022 年 3 月～4 月 |
| 5/22/2022 | 2022 年 3 月～4 月 |
| 6/15/2022 | 2022 年 3 月～4 月 |
| 6/26/2022 | 2022 年 3 月～4 月 |
| 7/9/2022 | 2022 年 5 月～6 月 |
| 7/22/2022 | 2022 年 5 月～6 月 |
| 7/23/2022 | 2022 年 5 月～6 月 |
| 7/27/2022 | 2022 年 5 月～6 月 |
| 8/2/2022 | 2022 年 5 月～6 月 |
| 8/8/2022 | 2022 年 5 月～6 月 |
| 8/19/2022 | 2022 年 5 月～6 月 |
| 9/26/2022 | 2022 年 7 月～8 月 |
| 10/14/2022 | 2022 年 7 月～8 月 |
| 10/29/2022 | 2022 年 7 月～8 月 |

この例では、`monthsname()` 関数の `period_no` 引数として -1 が使用されています。最初に 1 年を 2 か月のセグメントに分割した後、この関数はトランザクションが発生したときの以前のセグメント境界を返します。

monthsname 関数の図、period\_no の例

monthsname 関数の図、period\_no の例

monthsname 関数の図、period\_no の例 ![monthsname 関数を使用してトランザクションが発生した月範囲を特定した結果を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-period-no.png)

トランザクション 8195 は、5 月～6 月のセグメントに発生します。したがって、前の 2 か月のセグメントは 3 月 1 日から 4 月 30 日の間であったため、この関数は 2022 年 3 月から 4 月を返します。

## 例 3 – first\_month\_of\_year

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 最初の例と同じ inline データセットとシナリオ。

* トランザクションを 2 か月のセグメントにグループ化し、トランザクションごとにそのセグメントの境界を返す別の項目 [`bi_monthly_range`] の作成。

ただし、この例では、4 月を会計年度の最初の月として設定する必要もあります。

ロード スクリプト

```
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 | bi\_monthly\_range |
| --- | --- |
| 2/19/2022 | 2021 年 2 月～3 月 |
| 3/7/2022 | 2021 年 2 月～3 月 |
| 3/30/2022 | 2021 年 2 月～3 月 |
| 4/5/2022 | 2022 年 4 月～5 月 |
| 4/16/2022 | 2022 年 4 月～5 月 |
| 5/1/2022 | 2022 年 4 月～5 月 |
| 5/7/2022 | 2022 年 4 月～5 月 |
| 5/22/2022 | 2022 年 4 月～5 月 |
| 6/15/2022 | 2022 年 6 月～7 月 |
| 6/26/2022 | 2022 年 6 月～7 月 |
| 7/9/2022 | 2022 年 6 月～7 月 |
| 7/22/2022 | 2022 年 6 月～7 月 |
| 7/23/2022 | 2022 年 6 月～7 月 |
| 7/27/2022 | 2022 年 6 月～7 月 |
| 8/2/2022 | 2022 年 8 月～9 月 |
| 8/8/2022 | 2022 年 8 月～9 月 |
| 8/19/2022 | 2022 年 8 月～9 月 |
| 9/26/2022 | 2022 年 8 月～9 月 |
| 10/14/2022 | 2022 年 10 月～11 月 |
| 10/29/2022 | 2022 年 10 月～11 月 |

`monthsname()` 関数の `first_month_of_year` 引数に 4 を使用することにより、関数は 4 月 1 日に年度を開始します。その後その年度を 2 か月単位のセグメントに分割します。

結果の段落テキスト。

トランザクション 8195 は 5 月 22 日に発生し、4 月 1 日～5 月 31 日のセグメントに分類されます。したがって、この関数は 2022 年 4 月～5 月を返します。

monthsname 関数の図、first\_month\_of\_year の例

monthsname 関数の図、first\_month\_of\_year の例

monthsname 関数の図、first\_month\_of\_year の例 ![monthsname 関数を使用してトランザクションが発生した月範囲を特定した結果を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-first-month-of-year.png)

## 例 4 – チャート オブジェクトの例

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

#### ロード スクリプトとチャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。

ロード スクリプトには、最初の例と同じ inline データセットとシナリオが含まれます。ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクションを 2 か月のセグメントにグループ化し、トランザクションごとにそのセグメントの境界を返す計算は、アプリケーションのチャート オブジェクトでメジャーとして作成されます。

ロード スクリプト

```
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) |
| --- | --- |
| 2/19/2022 | 2022 年 1 月～2 月 |
| 3/7/2022 | 2022 年 3 月～4 月 |
| 3/30/2022 | 2022 年 3 月～4 月 |
| 4/5/2022 | 2022 年 3 月～4 月 |
| 4/16/2022 | 2022 年 3 月～4 月 |
| 5/1/2022 | 2022 年 5 月～6 月 |
| 5/7/2022 | 2022 年 5 月～6 月 |
| 5/22/2022 | 2022 年 5 月～6 月 |
| 6/15/2022 | 2022 年 5 月～6 月 |
| 6/26/2022 | 2022 年 5 月～6 月 |
| 7/9/2022 | 2022 年 7 月～8 月 |
| 7/22/2022 | 2022 年 7 月～8 月 |
| 7/23/2022 | 2022 年 7 月～8 月 |
| 7/27/2022 | 2022 年 7 月～8 月 |
| 8/2/2022 | 2022 年 7 月～8 月 |
| 8/8/2022 | 2022 年 7 月～8 月 |
| 8/19/2022 | 2022 年 7 月～8 月 |
| 9/26/2022 | 2022 年 9 月～10 月 |
| 10/14/2022 | 2022 年 9 月～10 月 |
| 10/29/2022 | 2022 年 9 月～10 月 |

[bi\_monthly\_range] 項目は、 monthsname() 関数を使用することにより、チャート オブジェクトに作成されます。提供される最初の引数は 2 で、年を 2 か月のセグメントに分割します。2 番目の引数は、評価される項目を識別します。

monthsname 関数の図、チャート オブジェクトの例

monthsname 関数の図、チャート オブジェクトの例

monthsname 関数の図、チャート オブジェクトの例 ![チャート オブジェクトで monthsname 関数を使用した結果を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthsname-example-chart-object.png)

トランザクション 8195 は 5 月 22 日に発生します。 関数は、最初に年を 2 か月のセグメントに分割します。monthsname() トランザクション 8195 は、5 月 1 日～6 月 30 日のセグメントに分類されます。したがって、この関数はこれらの月を MonthNames システム変数形式で返し、2022 年 5 月～6 月の年も返します。

## 例 5 – シナリオ

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

#### ロード スクリプトとチャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* Transactions というテーブルにロードされる、2022 年のトランザクションを含むデータセット。

* 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. メジャーの [数値書式] を [通貨] に設定します。編集を終了するには、 [シートを編集] をクリックします。変数オブジェクトの時間セグメントを調整することで、テーブルに表示されているデータを変更できるようになりました。

[tertial] オプションを選択した場合の結果テーブルは次のようになります。

結果テーブル

| monthsname($(vPeriod),date) | =sum(amount) |
| --- | --- |
| 2022 年 1 月～4 月 | 253.89 |
| 2021 年 5 月～8 月 | 713.58 |
| 2022 年 9 月～12 月 | 248.12 |