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

この関数は、環境変数に基づいた週番号が含まれる年を返します。週番号の範囲は、1 からおよそ 52 となります。

構文:

weekyear(timestamp [, first\_week\_day [, broken\_weeks [, reference\_day]]])

戻り値データ型： 整数

引数

| 引数 | 説明 |
| --- | --- |
| timestamp | 評価する日付またはタイムスタンプ。 |
| first\_week\_day | 週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。<br><br>first\_week\_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値を使用できます。<br><br>システム変数の詳細については、[FirstWeekDay](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) を参照してください。 |
| broken\_weeks | broken\_weeks が指定されていない場合は、変数 BrokenWeeks の値を使用して、週が分離しているかどうかを定義します。<br><br>システム変数の詳細については、[BrokenWeeks](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) を参照してください |
| reference\_day | reference\_day が指定されていない場合は、変数 ReferenceDay の値を使用して、第 1 週を定義する参照日として設定する 1 月の日を定義します。デフォルトでは、Qlik Sense 関数は 4 を参照日として使用します。これは、第 1 週に必ず 1 月 4 日が含まれる、または第 1 週に少なくとも 1 月の 4 日間が常に含まれることを意味します。<br><br>システム変数の詳細については、[ReferenceDay](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) を参照してください |

`weekyear()` 関数は、日付が年のどの週に該当するかを判断します。次に、その週番号に対応する年を返します。

`BrokenWeeks` が `0` (false) に設定されると、`weekyear()` が `year()` と同じ結果を返します。

`weekyear()` 関数範囲の図

`weekyear()` 関数範囲の図

`weekyear()`weekyear() 関数範囲の図 ![weekyear() 関数が評価する範囲を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekyear-diagram1.png)

ただし、`BrokenWeeks` システム変数が未分離の週を使用するように設定されている場合、`ReferenceDay` システム変数で指定した値に基づいて、第 1 週は 1 月の特定の日数のみを含むことになります。

例えば、`ReferenceDay` 値 `4` が使用される場合、第 1 週は 1 月に少なくとも 4 日を含む必要があります。第 1 週が前年 12 月の日付を含むことも、1 年の最後の週番号が翌年 1 月の日付を含むことも考えられます。このような状況では、`weekyear()` 関数は `year()` 関数に異なる値を返します。

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()`weekyear() 関数の範囲の図 ![weekyear() 関数が未分離の週を処理する様子を表示した図](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekyear-diagram2.png)

weekyear の使用目的

`weekyear()` 関数は、集計を年単位で比較する場合に便利です。たとえば、製品の総売上高を年ごとに表示する場合などが考えられます。ユーザーがアプリケーションで `BrokenWeeks` システム変数との一貫性を維持したい場合は、`year()` ではなく `weekyear()` 関数が選択されます。

## リージョンの設定

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

関数の例

| 例 | 結果 |
| --- | --- |
| `weekyear('12/30/1996',0,0,4)` | 1997 を返します (1997 年の第 1 週は 12/30/1996 に開始するため) |
| `weekyear('01/02/1997',0,0,4)` | 1997 を返します |
| `weekyear('12/28/1997',0,0,4)` | 1997 を返します |
| `weekyear('12/30/1997',0,0,4)` | 1998 を返します (1998 年の第 1 週は 12/29/1997 に開始するため) |
| `weekyear('01/02/1999',0,0,4)` | 1998 を返します (1998 年の第 53 週は 01/03/1999 に終了するため) |

関連トピック

| トピック | 相互作用 |
| --- | --- |
| [week スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/week.htm) | ISO 8601 に従って、週番号を表す整数を返します |
| [year スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/year.htm) | expression が標準的な数値の解釈に従って日付と判断される場合に、年を表す整数を返します。 |

## 例 1 - 分離された週

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

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

概要

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

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

* 2021 年の最後の週と 2021 年の最初の週のトランザクションを含むデータセットで、「`Transactions`」というテーブルにロードされます。

* 1 に設定された `BrokenWeeks` 変数。

* 次を含む、先行する LOAD:

  * 項目 [`week_year`] として設定された `weekyear()` 関数で、トランザクションが発生した年を返します。

  * 項目 [`week`] として設定された `week()` 関数で、各トランザクション日付の週番号を返します。

ロード スクリプト

```
SET BrokenWeeks=1; 
						
Transactions: 
	Load 
       *, 
       week(date) as week, 
       weekyear(date) as week_year 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

結果

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

* `id`
* `date`
* `week`
* `week_year`

結果テーブル

| id | date | week | week\_year |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 12/29/2020 | 53 | 2020 |
| 8178 | 12/30/2020 | 53 | 2020 |
| 8179 | 12/31/2020 | 53 | 2020 |
| 8180 | 01/01/2021 | 1 | 2021 |
| 8181 | 01/02/2021 | 1 | 2021 |
| 8182 | 01/03/2021 | 2 | 2021 |
| 8183 | 01/04/2021 | 2 | 2021 |
| 8184 | 01/05/2021 | 2 | 2021 |
| 8185 | 01/06/2021 | 2 | 2021 |
| 8186 | 01/07/2021 | 2 | 2021 |

[`week_year`] 項目は、`weekyear()` 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。

`BrokenWeeks` システム変数は `1` に設定されます。つまり、アプリケーションは分離された週を使うということです。第 1 週は 1 月 1 日に始まります。

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()`weekyear() 関数の範囲の図 ![weekyear() 関数が、トランザクション 8181 が第 1 週に発生したことを特定し、その週の年である 2021 を返すことを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekyear-examples1_and3-diagram.png)

トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[`week_year`] 項目に値 2021 を返します。

## 例 2 - 未分離の週

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

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

概要

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

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

* 2021 年の最後の週と 2021 年の最初の週のトランザクションを含むデータセットで、`Transactions` というテーブルにロードされます。

* `0`に設定された `BrokenWeeks` 変数。

* 次を含む、先行する LOAD:

  * 項目 [`week_year`] として設定された `weekyear()` 関数で、トランザクションが発生した年を返します。

  * 項目 [`week`] として設定された `week()` 関数で、各トランザクション日付の週番号を返します。

ただし、この例では、会社ポリシーで未分離の週を使用するよう定められています。

ロード スクリプト

```
SET BrokenWeeks=0; 
						
Transactions: 
	Load 
       *, 
       week(date) as week, 
       weekyear(date) as week_year 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

結果

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

* `id`
* `date`
* `week`
* `week_year`

結果テーブル

| id | date | week | week\_year |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 12/29/2020 | 53 | 2020 |
| 8178 | 12/30/2020 | 53 | 2020 |
| 8179 | 12/31/2020 | 53 | 2020 |
| 8180 | 01/01/2021 | 53 | 2020 |
| 8181 | 01/02/2021 | 53 | 2020 |
| 8182 | 01/03/2021 | 1 | 2021 |
| 8183 | 01/04/2021 | 1 | 2021 |
| 8184 | 01/05/2021 | 1 | 2021 |
| 8185 | 01/06/2021 | 1 | 2021 |
| 8186 | 01/07/2021 | 1 | 2021 |

`BrokenWeeks` システム変数は `0` に設定されます。つまり、アプリケーションは未分離の週を使うということです。そのため、第 1 週は 1 月 1 日に始まる必要はありません。

2020 年の第 53 週は 2021 年の 1 月 2 日の終わりまで続き、2020 年の第 1 週は 2021 年 1 月 3 日の日曜日に始まります。

分離された週を使用した場合の、`weekyear()` 関数の範囲の図

分離された週を使用した場合の、`weekyear()` 関数の範囲の図

分離された週を使用した場合の、`weekyear()`weekyear() 関数の範囲の図 ![weekyear() 関数が未分離の週を処理する様子と、第 53 週が 2020 年と 2021 年にまたがることを表示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekyear-example2-diagram.png)

トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[`week_year`] 項目に値 2021 を返します。

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

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

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

概要

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

ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した年の週番号を返す計算は、アプリケーションのチャートのメジャーとして作成されます。

ロード スクリプト

```
SET BrokenWeeks=1; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

結果

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

* `id`
* `date`

トランザクションが発生する週を計算するには、次のメジャーを作成します。

* `=week(date)`

週番号に基づいてトランザクションが発生する年を計算するには、次のメジャーを作成します。

* `=weekyear(date)`

結果テーブル

| id | date | week | week\_year |
| --- | --- | --- | --- |
| 8176 | 12/28/2020 | 53 | 2020 |
| 8177 | 12/29/2020 | 53 | 2020 |
| 8178 | 12/30/2020 | 53 | 2020 |
| 8179 | 12/31/2020 | 53 | 2020 |
| 8180 | 01/01/2021 | 1 | 2021 |
| 8181 | 01/02/2021 | 1 | 2021 |
| 8182 | 01/03/2021 | 2 | 2021 |
| 8183 | 01/04/2021 | 2 | 2021 |
| 8184 | 01/05/2021 | 2 | 2021 |
| 8185 | 01/06/2021 | 2 | 2021 |
| 8186 | 01/07/2021 | 2 | 2021 |

[`week_year`] 項目は、`weekyear()` 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。

`BrokenWeeks` システム変数は `1` に設定されます。つまり、アプリケーションは分離された週を使うということです。第 1 週は 1 月 1 日に始まります。

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()` 関数の範囲の図

未分離の週を使用した場合の、`weekyear()`weekyear() 関数の範囲の図 ![weekyear() 関数が、トランザクション 8181 が第 1 週に発生したことを特定し、その週の年である 2021 を返すことを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekyear-examples1_and3-diagram.png)

トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[`week_year`] 項目に値 2021 を返します。

## 例 4 – シナリオ

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

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

概要

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

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

* 2021 年の最後の週と 2021 年の最初の週のトランザクションを含むデータセットで、`Transactions` というテーブルにロードされます。

* `0`に設定された `BrokenWeeks` 変数。これは、アプリケーションが未分離の週を使うということです。

* `2`に設定された `ReferenceDay` 変数。これは、年が 1 月 2 日に始まり、1 月のうち少なくとも 2 日を含むということです。

* `1`に設定された `FirstWeekDay` 変数。これは、週の最初の日が火曜日であるということです。

会社ポリシーでは、分離された週を使用することになっています。エンド ユーザーは、年ごとの総売上高を示すチャートを求めています。アプリケーションは未分離の週を使用し、第 1 週に 1 月の少なくとも 2 日を含めます。

ロード スクリプト

```
SET BrokenWeeks=0; 
SET ReferenceDay=2; 
SET FirstWeekDay=1; 
 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8176,12/28/2020,19.42 
8177,12/29/2020,23.80 
8178,12/30/2020,82.06 
8179,12/31/2020,40.56 
8180,01/01/2021,37.23 
8181,01/02/2021,17.17 
8182,01/03/2021,88.27 
8183,01/04/2021,57.42 
8184,01/05/2021,67.42 
8185,01/06/2021,23.80 
8186,01/07/2021,82.06 
]; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成します。

週番号に基づいてトランザクションが発生する年を計算するには、次のメジャーを作成します。

* `=weekyear(date)`

総売上を計算するには、次のメジャーを作成します。

* `sum(amount)`

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

結果テーブル

| weekyear(date) | =sum(amount) |
| --- | --- |
| 2020 | 19.42 |
| 2021 | 373.37 |