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

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

構文:

InWeek (timestamp, base\_date, period\_no[, first\_week\_day])

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

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

`inweek()` 関数範囲の図

`inweek()` 関数範囲の図

`inweek()`inweek() 関数範囲の図 ![inweek() 関数を使用して、週セグメントで日付を評価し、日付が選択した範囲に含まれるかどうかをブール値で返す方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-diagram1.png)

`inweek()` 関数は、`base_date` 引数を使用して、日付が含まれる 7 日間を特定します。週の始めの曜日は、 `FirstWeekDay` システム変数に基づいています。ただし、 `inweek()` 関数で `first_week_day` 引数を使用して、週の最初の曜日を変更することもできます。

選択した週が定義されると、指定された日付値をその週セグメントと比較する際、関数はブール値の結果を返します。

inweek の使用目的

`InWeek` 関数はブール値の結果を返します。通常、このタイプの関数は `if expression` の条件として使用されます。`InWeek` 関数は、評価する日付が `base_date` 引数の選択した日付を含む週に入っているかによって集計または計算が返されます。

例えば、`InWeek` 関数を使用して、特定の週に製造されたすべての機器を識別することができます。

引数

| 引数 | 説明 |
| --- | --- |
| timestamp | base\_date と比較する日付。 |
| base\_date | 週の評価に使用する日付。 |
| period\_no | 週は period\_no によって補正することができます。period\_no は整数で、値 0 は base\_date を含む週を示します。period\_no の値が負の場合は過去の週を、正の場合は将来の週を示します。 |
| first\_week\_day | 既定では、週の最初の曜日は日曜日 (FirstWeekDay システム変数で決定) で、土曜日と日曜日の間の午前 0 時に始まります。 first\_week\_day パラメータは FirstWeekDay 変数に取って代わります。別の曜日から始まる週を指定するには、0～6 でフラグを指定します。 |

first\_week\_day 値

| 日 | 値 |
| --- | --- |
| 月曜日 | 0 |
| 火曜日 | 1 |
| 水曜日 | 2 |
| 木曜日 | 3 |
| 金曜日 | 4 |
| 土曜日 | 5 |
| 日曜日 | 6 |

## リージョンの設定

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

関数の例

| 例 | 結果 |
| --- | --- |
| ` inweek ('01/12/2006', '01/14/2006', 0)  ` | TRUE を返します |
| ` inweek ('01/12/2006', '01/20/2006', 0 )  ` | FALSE を返します |
| ` inweek ('01/12/2006', '01/14/2006', -1 )  ` | FALSE を返します |
| ` inweek ('01/07/2006', '01/14/2006', -1)  ` | TRUE を返します |
| ` inweek ('01/12/2006', '01/09/2006', 0, 3)  ` | `first_week_day` が 3 (木曜日) に指定されており、これにより 01/12/2006 が、01/09/2006 を含む週の次の週の開始日となるため、FALSE を返します。 |

これらのトピックは、この関数を使用するのに役立つかもしれません。

関連トピック

| トピック | 既定 フラグ / 値 | 説明 |
| --- | --- | --- |
| [FirstWeekDay](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) | 6 / 日曜日 | 各週の開始日を定義します。 |

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

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

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

概要

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

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

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

* `6` (日曜日) に設定された `FirstWeekDay` システム変数。

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

  * 2022 年 1 月 14 日の週に発生したトランザクションを決定する項目 [`in_week`] として設定された `inweek()` 関数。

  * 2022 年 1 月 14 日の週にweek\_day発生したトランザクションを決定する項目 [``] として設定された `weekday()` 関数。

ロード スクリプト

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
       weekday(date) as week_day, 
       inweek(date,'01/14/2022', 0) as in_week 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

結果

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

* `date`
* `week_day`
* `in_week`

結果テーブル

| date | week\_day | in\_week |
| --- | --- | --- |
| 01/02/2022 | 日 | 0 |
| 01/05/2022 | 水 | 0 |
| 01/06/2022 | 木 | 0 |
| 01/08/2022 | 土 | 0 |
| 01/09/2022 | 日 | -1 |
| 01/10/2022 | 月 | -1 |
| 01/11/2022 | 火 | -1 |
| 01/12/2022 | 水 | -1 |
| 01/13/2022 | 木 | -1 |
| 01/14/2022 | 金 | -1 |
| 01/15/2022 | 土 | -1 |
| 01/16/2022 | 日 | 0 |
| 01/17/2022 | 月 | 0 |
| 01/18/2022 | 火 | 0 |
| 01/26/2022 | 水 | 0 |
| 01/27/2022 | 木 | 0 |
| 01/28/2022 | 金 | 0 |
| 01/29/2022 | 土 | 0 |
| 01/30/2022 | 日 | 0 |
| 01/31/2022 | 月 | 0 |

[`in_week`] 項目は、`inweek()` 関数を使用して、前の Load ステートメントで作成されます。最初の引数は、評価される項目を識別します。第 2 引数はハードコード化された日付 1 月 14 日で、これは `base_date` です。`base_date` 引数は `FirstWeekDay` システム変数と連携して、比較対象の週を特定します。`0` の `period_no` (関数がセグメント化された週の前後の週を比較していないことを意味する) は、最後の引数です。

`` システム変数は、週が日曜日に始まり、土曜日に終わることを決定します。FirstWeekDay したがって、1 月は下図のように週に分割され、1 月 9 日～14 日の日付が `inweek()` 計算の有効期間となります。

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()`inweek() 引数の範囲がハイライトされたカレンダーの図 ![1 か月を示すカレンダーの図。9～15 までの日付が緑色でハイライトされており、9 日は日曜日、15 日は土曜日です。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example1-diagram.png)

1 月 9 日～14 日に発生したトランザクションは、`TRUE` のブール値の結果を返します。

## 例 2 – period\_no

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

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

概要

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

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

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

* `6` (日曜日) に設定された `FirstWeekDay` システム変数。

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

  * 2022 年 1 月 14 日の週の 1 週間前に発生したトランザクションを決定する項目 [`prev_week`] として設定された `inweek ()` 関数。

  * 2022 年 1 月 14 日の週にweek\_day発生したトランザクションを決定する項目 [``] として設定された `weekday()` 関数。

ロード スクリプト

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
	weekday(date) as week_day, 
	inweek(date,'01/14/2022', -1) as prev_week  
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

結果

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

* `date`
* `week_day`
* `prev_week`

結果テーブル

| date | week\_day | prev\_week |
| --- | --- | --- |
| 01/02/2022 | 日 | -1 |
| 01/05/2022 | 水 | -1 |
| 01/06/2022 | 木 | -1 |
| 01/08/2022 | 土 | -1 |
| 01/09/2022 | 日 | 0 |
| 01/10/2022 | 月 | 0 |
| 01/11/2022 | 火 | 0 |
| 01/12/2022 | 水 | 0 |
| 01/13/2022 | 木 | 0 |
| 01/14/2022 | 金 | 0 |
| 01/15/2022 | 土 | 0 |
| 01/16/2022 | 日 | 0 |
| 01/17/2022 | 月 | 0 |
| 01/18/2022 | 火 | 0 |
| 01/26/2022 | 水 | 0 |
| 01/27/2022 | 木 | 0 |
| 01/28/2022 | 金 | 0 |
| 01/29/2022 | 土 | 0 |
| 01/30/2022 | 日 | 0 |
| 01/31/2022 | 月 | 0 |

`inweek()` 関数で `-1` を `period_no` 引数として使用することにより、比較対象の週の境界を 7 日間ずらします。`0` の `period_no` では、週は 1 月 9～15 日となります。この例では、`-1` の `period_no` はこのセグメントの開始と終了境界を 1 週間戻します。日付境界が 1 月 2 日から 1 月 8 日になります。

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()`inweek() 引数の範囲がハイライトされたカレンダーの図 ![1 か月を示すカレンダーの図。2～8 までの日付が緑色でハイライトされています。2 日は日曜日、8 日は土曜日です。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example2-diagram.png)

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

## 例 3 – first\_week\_day

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

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

概要

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

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

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

* `6` (日曜日) に設定された `FirstWeekDay` システム変数。

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

  * 2022 年 1 月 14 日の週にin\_week発生したトランザクションを決定する項目 [``] として設定された `inweek()` 関数。

  * 2022 年 1 月 14 日の週にweek\_day発生したトランザクションを決定する項目 [``] として設定された `weekday()` 関数。

ロード スクリプト

```
SET FirstWeekDay=6; 
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
    Load 
       *, 
	weekday(date) as week_day, 
	inweek(date,'01/14/2022', 0, 0) as in_week 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

結果

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

* `date`
* `week_day`
* `in_week`

結果テーブル

| date | week\_day | in\_week |
| --- | --- | --- |
| 01/02/2022 | 日 | 0 |
| 01/05/2022 | 水 | 0 |
| 01/06/2022 | 木 | 0 |
| 01/08/2022 | 土 | 0 |
| 01/09/2022 | 日 | 0 |
| 01/10/2022 | 月 | -1 |
| 01/11/2022 | 火 | -1 |
| 01/12/2022 | 水 | -1 |
| 01/13/2022 | 木 | -1 |
| 01/14/2022 | 金 | -1 |
| 01/15/2022 | 土 | -1 |
| 01/16/2022 | 日 | -1 |
| 01/17/2022 | 月 | 0 |
| 01/18/2022 | 火 | 0 |
| 01/26/2022 | 水 | 0 |
| 01/27/2022 | 木 | 0 |
| 01/28/2022 | 金 | 0 |
| 01/29/2022 | 土 | 0 |
| 01/30/2022 | 日 | 0 |
| 01/31/2022 | 月 | 0 |

`inweek()` 関数の `first_week_day` 引数として `0` を使用することにより、関数引数が `FirstWeekDay` システム変数に取って代わり、月曜日を週の初日に設定します。

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()`inweek() 引数の範囲がハイライトされたカレンダーの図 ![1 か月を示すカレンダーの図。10～16 までの日付が緑色でハイライトされています。10 日は月曜日、16 日は日曜日です。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example3-diagram.png)

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

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

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

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

概要

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

ただし、この例ではデータセットは変更されず、アプリケーションにロードされます。結果テーブルにメジャーを作成して、2022 年 1 月 14 日の週に発生したトランザクションを判断します。

ロード スクリプト

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

結果

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

* `date`

次のメジャーを作成します:

* `=inweek (date,'01/14/2022',0)`、トランザクションが 1 月 14 日と同じ週に発生したかどうかを計算します。

* `=weekday(date)`、各日付に対応する曜日を示します。

結果テーブル

| date | week\_day | =inweek (date,'01/14/2022',0) |
| --- | --- | --- |
| 01/02/2022 | 日 | 0 |
| 01/05/2022 | 水 | 0 |
| 01/06/2022 | 木 | 0 |
| 01/08/2022 | 土 | 0 |
| 01/09/2022 | 日 | -1 |
| 01/10/2022 | 月 | -1 |
| 01/11/2022 | 火 | -1 |
| 01/12/2022 | 水 | -1 |
| 01/13/2022 | 木 | -1 |
| 01/14/2022 | 金 | -1 |
| 01/15/2022 | 土 | -1 |
| 01/16/2022 | 日 | 0 |
| 01/17/2022 | 月 | 0 |
| 01/18/2022 | 火 | 0 |
| 01/26/2022 | 水 | 0 |
| 01/27/2022 | 木 | 0 |
| 01/28/2022 | 金 | 0 |
| 01/29/2022 | 土 | 0 |
| 01/30/2022 | 日 | 0 |
| 01/31/2022 | 月 | 0 |

`in_week` メジャーは、 `inweek()` 関数を使用してチャートに作成されます。最初の引数は、評価される項目を識別します。第 2 引数はハードコード化された日付 1 月 14 日で、これは `base_date` です。`base_date` 引数は `FirstWeekDay` システム変数と連携して、比較対象の週を特定します。`0` の `period_no` が最終引数です。

`` システム変数は、週が日曜日に始まり、土曜日に終わることを決定します。FirstWeekDay したがって、1 月は下図のように週に分割され、1 月 9 日～14 日の日付が `inweek()` 計算の有効期間となります。

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()` 引数の範囲がハイライトされたカレンダーの図

`inweek()`inweek() 引数の範囲がハイライトされたカレンダーの図 ![1 か月を示すカレンダーの図。9～15 までの日付が緑色でハイライトされており、9 日は日曜日、15 日は土曜日です。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inweek-example1-diagram.png)

1 月 9 日～14 日に発生したトランザクションは、`TRUE` のブール値の結果を返します。

## 例 5 – シナリオ

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

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

概要

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

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

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

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

  * 製品 ID

  * 製品の種類

  * 製造日付

  * コスト

機器のエラーにより、1 月 12 日の週に製造された製品に欠陥があることが確認されています。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、その週に製造された製品のコストを週別に表示するチャートを希望しています。

ロード スクリプト

```
Products: 
Load 
* 
Inline  
[ 
product_id,manufacture_date,cost_price
8188,'01/02/2022',37.23 
8189,'01/05/2022',17.17 
8190,'01/06/2022',88.27 
8191,'01/08/2022',57.42 
8192,'01/09/2022',53.80 
8193,'01/10/2022',82.06 
8194,'01/11/2022',40.39 
8195,'01/12/2022',87.21 
8196,'01/13/2022',95.93 
8197,'01/14/2022',45.89 
8198,'01/15/2022',36.23 
8199,'01/16/2022',25.66 
8200,'01/17/2022',82.77 
8201,'01/18/2022',69.98 
8202,'01/26/2022',76.11 
8203,'01/27/2022',25.12 
8204,'01/28/2022',46.23 
8205,'01/29/2022',84.21 
8206,'01/30/2022',96.24 
8207,'01/31/2022',67.67 
]; 
```

結果

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

* =weekname(manufacture\_date)

次のメジャーを作成します:

* inweek() 関数を使って、不具合のある製品とない製品を特定する =if(only(inweek(manufacture\_date,makedate(2022,01,12),0)),'Defective','Faultless')。

* 各製品の合計コストを示す =sum(cost\_price)。

次の手順を実行します。

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

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

結果テーブル

| weekname(manufacture\_date) | =if(only(inweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless') | Sum(cost\_price) |
| --- | --- | --- |
| 2022/02 | 不具合なし | 200.09 |
| 2022/03 | 不具合 | 441.51 |
| 2022/04 | 不具合なし | 178.41 |
| 2022/05 | 不具合なし | 231.67 |
| 2022/06 | 不具合なし | 163.91 |

inweek() 関数は、各製品の製造日を評価するときにブール値を返します。1 月 12 日の週に製造された製品の場合、inweek() 関数はブール値 TRUE を返し、製品を「不具合」としてマークします。 の値を返し、その週に製造されなかった製品については、その製品に「不具合なし」のマークが付けられます。