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

この関数は、タイムスタンプが基準日と同じ月、隔月、四半期、4 か月、または半年に該当するかどうかを確認します。タイムスタンプがその前後の期間に該当するか確認することもできます。

構文:

InMonths(n\_months, timestamp, base\_date, period\_no [, first\_month\_of\_year])

戻り値データ型： ブール値

Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。

`inmonths()` 関数の図

`inmonths()` 関数の図

`inmonths()`inmonths() 関数の図 ![inmonths() 関数が基準日を true か false に評価する時間範囲を表示する図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

`inmonths()` 関数は、指定された `n_months` 引数に基づいて年をセグメントに分割します。次に、評価する各タイムスタンプが `base_date` 引数と同じセグメントに当たるかどうかを評価します。ただし、`period_no` 引数が入力されると、関数はタイムスタンプが `base_date` の前と後のどちらの期間に入るかを決定します。

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

`n_month`n\_month 引数

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

inmonths の使用目的

`inmonths()` 関数はブール値の結果を返します。通常、このタイプの関数は `if expression` の条件として使用されます。`inmonths()` 関数を使用することにより、評価する期間を選択できます。例えば、ユーザーが特定の期間のその月、四半期、6 か月に製造された製品を特定できるようにします。

戻り値データ型： Boolean

Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。

引数

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

次の値を使用して、`first_month_of_year` 引数に年の最初の月を設定できます。

first\_month\_of\_year values

| 月 | 値 |
| --- | --- |
| 2 月 | 2 |
| 3 月 | 3 |
| 4 月 | 4 |
| May | 5 |
| 6 月 | 6 |
| 7 月 | 7 |
| 8 月 | 8 |
| 9 月 | 9 |
| 10 月 | 10 |
| 11 月 | 11 |
| 12 月 | 12 |

## リージョンの設定

特に指定のない限り、このトピックの例では 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)」を参照してください。

関数の例

| 例 | 結果 |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | TRUE を返します。日付と時刻の値 25/01/2013 は、01/01/2013 ～ 30/04/2013 までの 4 か月の期間内です。この期間には、`base_date` の値 25/04/2013 も含まれています。 |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | FALSE を返します。25/05/2013 は、前述の例にある期間の範囲外です。 |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | TRUE を返します。`period_no` の値が `-1` のため、検索期間を 4 か月前 (n-months の値) にずらして、01/09/2012 ～ 31/12/2012 までの期間にします。 |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | TRUE を返します。`first_month_of_year` の値が `3` に設定されているため、検索期間は 01/01/2006 ～ 30/04/2006 ではなく 01/03/2006 ～ 30/07/2006 になります。 |

## 例 1 – 追加の引数なし

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

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

概要

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

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

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

* トランザクションが 2022 年 5 月 15 日と同じ四半期に発生したかどうかを判断する追加の変数「`in_months`」を使用した先行する LOAD。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0) as in_months 
       ; 
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`
* `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`] 項目は、`inmonths()` 関数を使用して、先行する LOAD ステートメントで作成されます。提供される最初の引数は `3` で、年を四半期のセグメントに分割します。2 番目の引数は、評価される項目 (この例では日付項目) を識別します。3 番目の引数は 5 月 15 日のハード化された日付 (`base_date`) であり、`0` の `period_no` が最終的な引数です。

四半期セグメントの `inmonths()` 関数の図

四半期セグメントの `inmonths()` 関数の図

四半期セグメントの `inmonths()`inmonths() 関数の図 ![基準日として 5 月 15 日を使って inmonths() 関数が評価する期間、四半期セグメントに分割された年を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

5 月は年の第 2 四半期に当たります。したがって、4 月 1 日～6 月 30 日に発生したトランザクションは、のブール値の結果を返します。これは、結果テーブルで検証されます。

## 例 2 – period\_no

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

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

概要

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

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

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

* トランザクションが 2022 年 5 月 15 日より前の四半期に発生したかどうかを判断する追加の変数「`previous_quarter`」を使用した先行 Load。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', -1) as previous_quarter 
       ; 
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`
* `previous_quarter`

結果テーブル

| date | 前の四半期 |
| --- | --- |
| 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 |

関数は、`inmonths()` で `-1` を `period_no` 引数として使用することにより、トランザクションがその年の第 1 四半期に発生したかどうかを評価します。5 月 15 日は `base_date` であり、年の第 2 四半期に当たります (4～6 月)。

`period_no` が `-1` に設定された四半期セグメントの `inmonths()` 関数の図

`period_no` が `-1` に設定された四半期セグメントの `inmonths()` 関数の図

`period_no`period\_no が `-1`-1 に設定された四半期セグメントの `inmonths()`inmonths() 関数の図 ![基準日として 5 月 15 日を使って inmonths() 関数が評価する期間、四半期セグメントに分割された年、時間範囲を 1 四半期戻す period_no set -1 を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

したがって、1 月～3 月に発生したトランザクションは、TRUE のブール値の結果を返します。

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

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

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

概要

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

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

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

* トランザクションが 2022 年 5 月 15 日と同じ四半期に発生したかどうかを判断する追加の変数「`in_months`」を使用した先行 Load。

この例では、組織ポリシーでは 3 月が会計期間の開始月に定められています。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0, 3) as in_months 
       ; 
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`
* `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 |

`inmonths()` 関数の `first_month_of_year` 引数に `3` を使用することにより、関数は 3 月 1 日に年度を開始します。`inmonths()` 関数は、次にその年度を四半期 (3 月～5 月、6 月～8 月、9 月～11 月、12 月～2 月) に分割します。従って、5 月 15 日はその年の第 1 四半期 (3 月～5 月) に当たります。

3 月が年の最初の月に設定された `inmonths()` 関数の図

3 月が年の最初の月に設定された `inmonths()` 関数の図

3 月が年の最初の月に設定された `inmonths()`inmonths() 関数の図 ![基準日として 5 月 15 日を使って inmonths() 関数が評価する期間、四半期セグメントに分割された年、年の開始月として 3 月が設定されたことを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

これらの月に発生したトランザクションは、ブール値結果 TRUE を返します。

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

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

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

概要

最初の例と同じデータセットとシナリオが使用されます。

ただし、この例ではデータセットは変更されず、アプリケーションにロードされます。トランザクションが 2022 年 5 月 15 日と同じ四半期に発生したかどうかを決定する計算は、アプリケーションのチャートのメジャーとして作成されます。

ロード スクリプト

```
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`

5 月 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` で、年を四半期のセグメントに分割します。2 番目の引数は、評価される項目 (この例では日付項目) を識別します。3 番目の引数は 5 月 15 日のハード化された日付 (`base_date`) であり、`0` の `period_no` が最終的な引数です。

四半期セグメントの `inmonths()` 関数の図

四半期セグメントの `inmonths()` 関数の図

四半期セグメントの `inmonths()`inmonths() 関数の図 ![基準日として 5 月 15 日を使って inmonths() 関数が評価する期間、四半期セグメントに分割された年を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

5 月は年の第 2 四半期に当たります。したがって、4 月 1 日～6 月 30 日に発生したトランザクションは、のブール値の結果を返します。これは、結果テーブルで検証されます。

## 例 5 – シナリオ

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

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

概要

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

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

* 「Products」というテーブルにロードされるデータセット。

* テーブルには次の項目が含まれています。

  * 製品 ID

  * 製品の種類

  * 製造日付

  * コスト

エンド ユーザーは、2021 年の最初のセグメントに製造された製品のコストを製品タイプ別に表示するチャートを希望しています。ユーザーはセグメントの長さを定義したいと考えています。

ロード スクリプト

```
SET vPeriod = 1; 

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

結果

データをロードしてシートを開きます。

ロード スクリプトの開始時には、変数入力コントロールに関連付けられる変数 (vPeriod) が作成されます。

以下を実行します。

1. アセット パネルで、 [チャート] をクリックします。

2. [ダッシュボード オブジェクト] で、 [変数入力] をシート上にドラッグします。

3. チャート オブジェクトのタイトルを入力します。

4. [変数] で、[名前] に [vPeriod] を選択し、オブジェクトを [ドロップ ダウン] として表示するように設定します。

5. [値] で、[ダイナミック] 値をクリックします。以下を入力します。

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

6. 新しいテーブルをシートに追加します。

7. プロパティ パネルの [データ] から、軸として product\_type を追加します。

8. 次の数式をメジャーとして追加します:

   =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

9. メジャーの [数値書式] を [通貨] に設定します。

結果テーブル

| product\_type | =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0)) |
| --- | --- |
| 製品 A | $88.27 |
| 製品 B | $37.23 |
| 製品 C | $17.17 |
| 製品 D | $0.00 |

inmonths() 関数は、ユーザー入力を引数として使用し、年の開始セグメントのサイズを定義します。関数は各製品の製造日付を inmonths() 関数の第 3 引数として渡します。inmonths() 関数で 1 月 1 日を第 3 引数にすると、製造日が開始セグメントに当たる製品は TRUE を返すため、sum 関数でそれらの製品のコストを加算することができます。