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

この関数は、timestamp が base\_date を含む年の範囲内にある場合、True を返します。

構文:

InYear (timestamp, base\_date, period\_no [, first\_month\_of\_year])

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

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

`inyear()` 関数範囲の図

`inyear()` 関数範囲の図

`inyear()`inyear() 関数範囲の図 ![inyear() 関数が評価し、基準日付の配置によりブール値結果を返す期間を表示する図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-diagram1.png)

選択した日付値を `base_date` により定義された年と比較する際、`inyear()` 関数はブール値の結果を返します。

inyear の使用目的

`inyear()` 関数はブール値の結果を返します。通常、このタイプの関数は `if expression` の条件として使用されます。これは、評価された日付が問題の年に発生したかどうかに応じて、集計または計算を返します。例えば、`inyear()` 関数は定義した年に発生したすべての販売を特定するのに使用できます。

引数

| 引数 | 説明 |
| --- | --- |
| timestamp | base\_date と比較する日付。 |
| base\_date | 年の評価に使用する日付。 |
| period\_no | 年は 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)」を参照してください。

関数の例

| 例 | 結果 |
| --- | --- |
| `inyear ('01/25/2013', '01/01/2013', 0 )` | TRUE を返します |
| `inyear ('01/25/2012', '01/01/2013', 0)` | FALSE を返します |
| `inyear ('01/25/2013', '01/01/2013', -1)` | FALSE を返します |
| `inyear ('01/25/2012', '01/01/2013', -1 )` | TRUE を返します |
| `inyear ('01/25/2013', '01/01/2013', 0, 3)` | TRUE を返します<br><br>`first_month_of_year` の `base_date` は、タイムスタンプが01/03/2012 から 28/02/2013 までの範囲内である必要がありことを指定します。 |
| `inyear ('03/25/2013', '07/01/2013', 0, 3 )` | TRUE を返します |

## 例 1 – 基本的な例

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

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

概要

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

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

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

* `inyear()` 関数が [`in_year`] 項目として設定された先行する LOAD で、2021 年 7 月 26 日と同じ年に発生したトランザクションを決定します。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', 0) as in_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `date`
* `in_year`

結果テーブル

| date | in\_year |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

[`in_year`] 項目は、`inyear()` 関数を使用して、前の Load ステートメントで作成されます。最初の引数は、評価される項目を識別します。2 番目の引数は、2021 年 7 月 26 日のハードコード化された日付です。これは `base_date` で、その比較年を定義します。`0` の `period_no` は最後の引数です。つまり、`inyear()` 関数がセグメント化された年の前後の年を比較しないという意味です。

基準日が 7 月 26 日の `inyear()` 関数の範囲の図

基準日が 7 月 26 日の `inyear()` 関数の範囲の図

基準日が 7 月 26 日の `inyear()`inyear() 関数の範囲の図 ![基準日が 7 月 26 日の inyear() 関数、そして 2021 年 1 月 1 日～ 2022 年 1 月 1 日がハイライトされた図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-examples1_and4-diagram.png)

2021 年に発生したトランザクションは、ブール値結果 TRUE を返します。

## 例 2 – period\_no

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

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

概要

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

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

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

* `inyear()` 関数が [`previous_year`] 項目として設定された先行 load で、2021 年 7 月 26 日を含む年の前の年に発生したトランザクションを決定します。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', -1) as previous_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `date`
* `previous_year`

結果テーブル

| date | previous\_year |
| --- | --- |
| 01/13/2020 | -1 |
| 02/26/2020 | -1 |
| 03/27/2020 | -1 |
| 04/16/2020 | -1 |
| 05/21/2020 | -1 |
| 08/14/2020 | -1 |
| 10/07/2020 | -1 |
| 12/05/2020 | -1 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | 0 |
| 04/23/2021 | 0 |
| 05/04/2021 | 0 |
| 06/30/2021 | 0 |
| 07/26/2021 | 0 |
| 12/27/2021 | 0 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

`-1` を `inyear()` の `period_no` 引数として使用することにより、比較年の境界が丸 1 年戻ります。元々比較年として特定されていたのは 2021 年です。`period_no` は、比較年を 1 年オフセットするため、2020 年が比較年となります。

period\_no argument が `-1` に設定された `inyear()` 関数の範囲の図

period\_no argument が `-1` に設定された `inyear()` 関数の範囲の図

period\_no argument が `-1`-1 に設定された `inyear()`inyear() 関数の範囲の図 ![基準日が 7 月 26 日、period_no 引数が負の数に設定された inyear() 関数。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-example2-diagram.png)

そのため、2020 年に発生したトランザクションは、ブール値結果 TRUE を返します。

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

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

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

概要

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

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

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

* `inyear()` 関数が [`in_year`] 項目として設定された先行 load で、2021 年 7 月 26 日と同じ年に発生したトランザクションを決定します。

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

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
        *, 
        inyear(date,'07/26/2021', 0, 3) as in_year 
        ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `date`
* `in_year`

結果テーブル

| date | in\_year |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | 0 |
| 02/03/2021 | 0 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

`3` を `inyear()` 関数の `first_month_of_year` 引数として使用することで、年は 3 月 1 日に開始され、2 月 終わりに終了します。

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

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

3 月が年の最初の月に設定された `inyear()`inyear() 関数の範囲の図 ![基準日が 7 月 26 日で、年の最初の月が 3 月に設定された inyear() 関数の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-example3-diagram.png)

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

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

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

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

概要

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

ただし、この例ではデータセットは変更されず、アプリケーションにロードされます。トランザクションが 2021 年 7 月 26 日の年と同年に発生したかどうかを判断する計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* `date`

2021 年 7 月 26 日と同年にトランザクションが発生したかどうかを計算するには、次のメジャーを作成します:

* `=inyear(date,'07/26/2021', 0)`

結果テーブル

| date | =inyear(date,'07/26/2021',0) |
| --- | --- |
| 01/13/2020 | 0 |
| 02/26/2020 | 0 |
| 03/27/2020 | 0 |
| 04/16/2020 | 0 |
| 05/21/2020 | 0 |
| 08/14/2020 | 0 |
| 10/07/2020 | 0 |
| 12/05/2020 | 0 |
| 01/22/2021 | -1 |
| 02/03/2021 | -1 |
| 03/17/2021 | -1 |
| 04/23/2021 | -1 |
| 05/04/2021 | -1 |
| 06/30/2021 | -1 |
| 07/26/2021 | -1 |
| 12/27/2021 | -1 |
| 06/06/2022 | 0 |
| 07/18/2022 | 0 |
| 11/14/2022 | 0 |
| 12/12/2022 | 0 |

[`in_year`] 項目は、 `inyear()` 関数を使用することにより、チャートに作成されます。最初の引数は、評価される項目を識別します。2 番目の引数は、2021 年 7 月 26 日のハードコード化された日付です。これは `base_date` で、その比較年を定義します。`0` の `period_no` は最後の引数です。つまり、`inyear()` 関数がセグメント化された年の前後の年を比較しないという意味です。

基準日が 7 月 27 日の `inyear()` 関数の範囲の図

基準日が 7 月 27 日の `inyear()` 関数の範囲の図

基準日が 7 月 27 日の `inyear()`inyear() 関数の範囲の図 ![基準日が 7 月 27 日の inyear() 関数、そして 2021 年 1 月 1 日～ 2022 年 1 月 1 日がハイライトされた図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inyear-examples1_and4-diagram.png)

2021 年に発生したトランザクションは、ブール値結果 TRUE を返します。

## 例 5 – シナリオ

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

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

概要

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

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

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

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

  * 製品 ID

  * 製品の種類

  * 製造日付

  * コスト

エンド ユーザーは、2021 年に製造された製品のコストを製品タイプ別に表示するチャート オブジェクトを望んでいます。

ロード スクリプト

```
Products: 
Load 
* 
Inline  
[ 
product_id,product_type,manufacture_date,cost_price 
8188,product A,'01/13/2020',37.23 
8189,product B,'02/26/2020',17.17 
8190,product B,'03/27/2020',88.27 
8191,product C,'04/16/2020',57.42 
8192,product D,'05/21/2020',53.80 
8193,product D,'08/14/2020',82.06 
8194,product C,'10/07/2020',40.39 
8195,product B,'12/05/2020',87.21
8196,product A,'01/22/2021',95.93 
8197,product B,'02/03/2021',45.89 
8198,product C,'03/17/2021',36.23 
8199,product C,'04/23/2021',25.66
8200,product B,'05/04/2021',82.77 
8201,product D,'06/30/2021',69.98 
8202,product D,'07/26/2021',76.11 
8203,product D,'12/27/2021',25.12 
8204,product C,'06/06/2022',46.23 
8205,product C,'07/18/2022',84.21 
8206,product A,'11/14/2022',96.24 
8207,product B,'12/12/2022',67.67 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* product\_type

7 月 27 日より前、2021 年に製造された各製品の合計を計算するメジャーを作成します:

* =sum(if(InYear(manufacture\_date,makedate(2021,01,01),0),cost\_price,0))

次の手順を実行します。

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

2. [スタイル] で [合計] をオフにします。

結果テーブル

| product\_type | =sum(if(InYear(manufacture\_date,makedate(2021,01,01),0),cost\_price,0)) |
| --- | --- |
| 製品 A | $95.93 |
| 製品 B | $128.66 |
| 製品 C | $61.89 |
| 製品 D | $171.21 |

inyear() 関数は、各製品の製造日を評価するときにブール値を返します。2021 年に製造された製品の場合、inyear() 関数はブール値 cost\_price を返し、. の合計を算出します。