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

この関数は、timestamp が base\_date を含む週周期の範囲内かどうかを判断します。Qlik Sense の旧暦の週は、1 月 1 日を週の初日として数えるよう定義され、1 年の最終週を除いて、各週は正確に 7 日構成となります。

構文:

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

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

情報メモ

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

`inlunarweek()` 関数は、`base_date` がどの旧暦の週に当たるかを決定します。次に、`base_date` と同じ旧暦の週の間に各タイムスタンプ値が発生することが決定したら、ブール値を返します。

`inlunarweek()` 関数の図

`inlunarweek()` 関数の図

`inlunarweek()`inlunarweek() 関数の図 ![入力情報に即して TRUE 値を返す日付を表示した、inlunarweek 関数の図の例。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-overview.png)

## inlunarweek の使用目的

`inlunarweek()` 関数はブール値の結果を返します。通常、このタイプの関数は IF 式の条件として使用されます。これにより、評価される日付が問題の旧暦の週に発生したかどうかに応じて、集計または計算を返します。

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

引数

| 引数 | 説明 |
| --- | --- |
| timestamp | base\_date と比較する日付。 |
| base\_date | 週周期の評価に使用する日付。 |
| period\_no | 週周期は period\_no によって補正することができます。period\_no は整数で、値 0 は base\_date を含む週周期を示します。period\_no の値が負の場合は過去の週周期を、正の場合は将来の週周期を示します。 |
| first\_week\_day | 0 未満または 0 よりも大きい補正値。日数または 1 日未満の長さ、またはその両方を指定して、年の開始時点を変更できます。 |

関数の例

| 例 | 結果 |
| --- | --- |
| `inlunarweek('01/12/2013', '01/14/2013',<br>0)` | `timestamp` の値 01/12/2013 が 01/08/2013～ 01/14/2013 の週に当たるため、`TRUE` を返します。 |
| `inlunarweek('01/12/2013', '01/07/2013',<br>0)` | `base_date` 01/07/2013 が 01/01/2013～01/07/2013 と定義された旧暦の週に当たるため、`FALSE` を返します。 |
| `inlunarweek('01/12/2013', '01/14/2013',<br>-1)` | `FALSE` を返します。period\_noの値に-1 が指定されており、前の週である 01/01/2013 から 01/07/2013 に週がシフトしています。 |
| `inlunarweek('01/07/2013', 01/14/2013',<br>-1)` | `TRUE` を返します。上の例と異なり、`timestamp` は過去へシフトするとタイムスタンプがその週の範囲内になります。 |
| `inlunarweek('01/11/2006', '01/08/2006',<br>0, 3)` | `FALSE` を返します。`first_week_day` に値 3 を指定すると、年の初めが 01/04/2013 から計算されます。そのため、`base`\_date の値は最初の週に当たり、`timestamp` の値は 01/11/2013～01/17/2013 の週に当たります。 |

`inlunarweek()` 関数は、多くの場合、次の関数と組み合わせて使用されます。

関連する関数

| ファンクション | 相互作用 |
| --- | --- |
| [lunarweekname スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm) | この関数は、入力された日付が属する年の旧暦の週番号を決定するために使用されます。 |

## リージョンの設定

特に指定のない限り、このトピックの例では 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 – 追加の引数なし

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

概要

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

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

* `Transactions` というテーブルにロードされる、1 月のトランザクションのデータセット。

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

トランザクションが 1 月 10 日と同じ旧暦の週に発生するかどうかを決定する項目 `in_lunar_week` を作成します。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

結果

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

* `date`

* `in_lunar_week`

結果テーブル

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

`inlunarweek()` 関数、基本的な例

`inlunarweek()` 関数、基本的な例

`inlunarweek()`inlunarweek() 関数、基本的な例 ![入力情報に即して TRUE 値を返す日付範囲を表示した、inlunarweek 関数の図の例。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-basic-example.png)

`in_lunar_week` 項目は、`inlunarweek()` 関数を使用し、関数の引数として次の項目を渡すことにより、先行する LOAD ステートメントで作成されます。

* `date` 項目

* `base_date` としてハードコード化された 1 月 10 日の日付

* 0 の `period_no`

旧暦の週は 1 月 1 日から始まるため、1 月 10 日は 1 月 8 日に始まり 1 月 14 日に終わる旧暦の週に当たります。そのため、それら 2 つの日付の間に発生するトランザクションはブール値 `TRUE` を返します。これは、結果テーブルで検証されます。

## 例 2 – period\_no

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

#### 例と結果:

概要

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

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

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

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

ただし、この例では、トランザクションが 1 月 10 日より旧暦 2 週間後に発生するかどうかを決定する項目 `2_lunar_weeks_later` を作成します。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

結果

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

* `date`

* `2_lunar_weeks_later`

結果テーブル

| date | 2\_lunar\_weeks\_later |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | 0 |
| 1/9/2022 | 0 |
| 1/10/2022 | 0 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | -1 |
| 1/23/2022 | -1 |

`inlunarweek()` 関数、period\_no example

`inlunarweek()` 関数、period\_no example

`inlunarweek()`inlunarweek() 関数、period\_no example ![inlunarweek 関数、period_no example](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-period-no.png)

この例では、`period_no` の 2 が `inlunarweek()` 関数のオフセット引数として使用されるため、関数がトランザクションを突き合わせる旧暦の週として 1 月 22 日で始まる週を定義します。したがって、1 月 22 日～1 月 28 日に発生したトランザクションは、`TRUE`のブール値の結果を返します。

## 例 3 – first\_week\_day

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

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

概要

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

ロード スクリプトは、最初の例と同じデータセットとシナリオを使用します。ただし、この例では、旧暦の週が 1 月 6 日に始まるよう設定しています。

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

* 既定の `DateFormat` システム変数 MM/DD/YYYY が使用されます。

* `first_week_day` 引数 5。これにより、旧暦の週が 1 月 5 日に始まります。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,5) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

結果

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

* `date`

* `in_lunar_week`

結果テーブル

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | -1 |
| 1/7/2022 | -1 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

`inlunarweek()` 関数、first\_week\_day 例

`inlunarweek()` 関数、first\_week\_day 例

`inlunarweek()`inlunarweek() 関数、first\_week\_day 例 ![入力情報に即して TRUE 値を返す日付範囲を表示した、inlunarweek 関数の図の例。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-first-week-day.png)

この例では、`first_week_date` 引数の 5 が `inlunarweek()` 関数で使用されているため、旧暦の週の始めが 1 月 6 日にオフセットされます。そのため 1 月 10 日は 1 月 6 日に始まり 12 日に終わる旧暦の週に当たります。これら 2 つの日付の間に発生するトランザクションは、ブール値 `TRUE` を返します。

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

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

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

概要

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

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

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

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

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

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

結果

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

トランザクションが 1 月 10 日を含む週に発生するかどうかを計算するには、次のメジャーを作成します。

= inlunarweek(date,'01/10/2022', 0)

結果テーブル

| date | =inlunarweek(date,'01/10/2022', 0) |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

## 例 5 – シナリオ

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

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

概要

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

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

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

* 製品 ID、製造年月日、原価を含む情報。

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

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

結果

次の手順を実行します。

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

2. 月名を表示する軸を作成します。

   =lunarweekname(manufacture\_date)

3. inlunarweek() 関数を使って、不具合のある製品とない製品を特定するメジャーを作成します。

   =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless')

4. 製品の cost\_price を合計するメジャーを作成します。

   =sum(cost\_price)

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

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

結果テーブル

| lunarweekname(manufacture\_date) | =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless') | sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | 不具合なし | $125.79 |
| 2022/02 | 不具合 | $316.38 |
| 2022/03 | 不具合なし | $455.75 |
| 2022/04 | 不具合なし | $146.09 |

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