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

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

構文:

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

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

情報メモ

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

`inlunarweektodate()` 関数の図の例

`inlunarweektodate()` 関数の図の例

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

`inlunarweektodate()` 関数は、旧暦の週の終了点として機能します。一方、`inlunarweek()` 関数は、`base_date` がどの旧暦の週に当たるかを決定します。例えば、`base_date` が 1 月 5 日で、1 月 1 日～1 月 5 日のタイムスタンプはブール値の結果 `TRUE` を返しますが、1 月 6 日と 7 日以降はブール値 `FALSE` を返します。

引数

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

## inlunarweektodate の使用目的

`inlunarweektodate()` 関数はブール値の結果を返します。通常、このタイプの関数は IF 式の条件として使用されます。`inlunarweektodate()` 関数は、評価された日付が対象の週の特定のセグメントに発生したかどうかに応じて、集計または計算を返すようにユーザーが希望する場合に使用されます。

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

関数の例

| 例 | 結果 |
| --- | --- |
| `inlunarweektodate('01/12/2013', '01/13/2013',<br>						0)` | `timestamp` の値 01/12/2013 が 01/08/2013～ 01/13/2013 の週の一部に当たるため、`TRUE` を返します。 |
| `inlunarweektodate('01/12/2013', '01/11/2013',<br>						0)` | 2 つの日付が 01/12/2012 の同じ旧暦の週にありますが、`timestamp` の値が `base_date` の値より後であるため、`FALSE` を返します。 |
| `inlunarweektodate('01/12/2006', '01/05/2006',<br>						1)` | `TRUE` を返します。`period_no` に 1 を指定すると `base_date` を 1 週間先にシフトするので、`timestamp` の値がその週周期の範囲内になります。 |

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

関連する関数

| ファンクション | 相互作用 |
| --- | --- |
| [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_to_date` を作成します。

ロード スクリプト

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

Transactions:
    Load
        *,
        inlunarweektodate(date,'01/10/2022', 0) as in_lunar_week_to_date
        ;
Load
*
Inline 
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

結果

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

* `date`

* `in_lunar_week_to_date`

結果テーブル

| date | in\_lunar\_week\_to\_date |
| --- | --- |
| 1/1/2022 | 0 |
| 1/4/2022 | 0 |
| 1/10/2022 | -1 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/15/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/21/2022 | 0 |
| 1/23/2022 | 0 |
| 1/26/2022 | 0 |
| 1/27/2022 | 0 |
| 1/29/2022 | 0 |
| 1/31/2022 | 0 |

`inlunarweektodate()` 関数、追加引数なし

`inlunarweektodate()` 関数、追加引数なし

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

`in_lunar_week_to_date` 項目は、`inlunarweektodate()` 関数を使用し、`base_date` と 0 を関数の引数として 1 月 10 日のハードコード化された日付 `date` を渡すことにより、先行する LOAD ステートメントで作成されます。

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

## 例 2 – period\_no

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

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

概要

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

ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例のタスクは、トランザクションが 1 月 10 日より旧暦 2 週間後に発生するかどうかを決定する項目 `2_lunar_weeks_later` を作成することです。

ロード スクリプト

```
SET DateFormat='MM/DD/YYYY';
Transactions:
    Load
        *,
        inlunarweektodate(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

結果

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

* `date`

* `2_lunar_weeks_later`

結果テーブル

| date | 2\_lunar\_weeks\_later |
| --- | --- |
| 1/1/2022 | 0 |
| 1/4/2022 | 0 |
| 1/10/2022 | 0 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/15/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/21/2022 | 0 |
| 1/23/2022 | -1 |
| 1/26/2022 | 0 |
| 1/27/2022 | 0 |
| 1/29/2022 | 0 |
| 1/31/2022 | 0 |

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

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

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

この例では、`inlunarweektodate()` 関数が 1 月 10 日までの旧暦の週が 3 日 (1 月 8、9、10 日) と等しいかどうかを決定します。`period_no` 2 がオフセット引数として使用されるため、この旧暦の週は 14 日間ずれます。そのため、これは 1 月 22、23、および 24 日を含む 3 日の旧暦の週を定義します。1 月 22 日～1 月 24 日に発生したトランザクションは、`TRUE`のブール値の結果を返します。

## 例 3 – first\_week\_day

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

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

概要

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

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

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

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

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

ロード スクリプト

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,3) as in_lunar_week_to_date
        ;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

結果

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

* `date`

* `in_lunar_week_to_date`

結果テーブル

| date | in\_lunar\_week\_to\_date |
| --- | --- |
| 1/1/2022 | 0 |
| 1/4/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/15/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/21/2022 | 0 |
| 1/23/2022 | 0 |
| 1/26/2022 | 0 |
| 1/27/2022 | 0 |
| 1/29/2022 | 0 |
| 1/31/2022 | 0 |

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

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

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

この例では、`the first_week_date` 引数 3 が `inlunarweek()` 関数で使用されているため、最初の旧暦の週は 1 月 3 日～1 月 10 日となります。1 月 10 日も `base_date` に当たるため、これら 2 つの日付の間に発生するトランザクションは、ブール値 `TRUE` を返します。

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

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

概要

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

ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。

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

ロード スクリプト

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

Transactions: 
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

結果

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

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

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

結果テーブル

| date | =inlunarweektodate(date,'01/10/2022', 0) |
| --- | --- |
| 1/1/2022 | 0 |
| 1/4/2022 | 0 |
| 1/10/2022 | -1 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/15/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/21/2022 | 0 |
| 1/23/2022 | 0 |
| 1/26/2022 | 0 |
| 1/27/2022 | 0 |
| 1/29/2022 | 0 |
| 1/31/2022 | 0 |

inlunarweektodate() 関数、チャート オブジェクトの例

inlunarweektodate() 関数、チャート オブジェクトの例

inlunarweektodate()inlunarweektodate() 関数、チャート オブジェクトの例 ![inlunarweektodate 関数の使用例。1 月 10 日を含む旧暦の週にトランザクションが発生したかどうかを判定するチャート式。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-chart-object.png)

in\_lunar\_week\_to\_date メジャーは、inlunarweektodate() 関数を使用し、日付項目、1 月 10 日のハードコードされた日付を base\_date として、0 のオフセットを関数の引数として渡すことにより、チャート オブジェクトで作成されます。

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

## 例 5 – シナリオ

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

概要

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

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

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

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

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

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8188,'01/02/2022 12:22:06',37.23
8189,'01/05/2022 01:02:30',17.17
8190,'01/06/2022 15:36:20',88.27
8191,'01/08/2022 10:58:35',57.42
8192,'01/09/2022 08:53:32',53.80
8193,'01/10/2022 21:13:01',82.06
8194,'01/11/2022 00:57:13',40.39
8195,'01/12/2022 09:26:02',87.21
8196,'01/13/2022 15:05:09',95.93
8197,'01/14/2022 18:44:57',45.89
8198,'01/15/2022 06:10:46',36.23
8199,'01/16/2022 06:39:27',25.66
8200,'01/17/2022 10:44:16',82.77
8201,'01/18/2022 18:48:17',69.98
8202,'01/26/2022 04:36:03',76.11
8203,'01/27/2022 08:07:49',25.12
8204,'01/28/2022 12:24:29',46.23
8205,'01/30/2022 11:56:56',84.21
8206,'01/30/2022 14:40:19',96.24
8207,'01/31/2022 05:28:21',67.67
];
```

結果

次の手順を実行します。

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

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

   =weekname(manufacture\_date)

3. 次に、不具合のある製品とない製品を特定する、inlunarweektodate() 関数を使った軸を作成します。

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

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

   =sum(cost\_price)

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

結果テーブル

| =lunarweekname(manufacture\_date) | =if(InLunarWeekToDate(manufacture\_date,makedate(2022,01,12),0),'Defective','Faultless') | =Sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | 不具合なし | $142.67 |
| 2022/02 | 不具合 | $320.88 |
| 2022/02 | 不具合なし | $141.82 |
| 2022/03 | 不具合なし | $214.64 |
| 2022/04 | 不具合なし | $147.46 |
| 2022/05 | 不具合なし | $248.12 |

inlunarweektodate() 関数は、各製品の製造日を評価するときにブール値を返します。TRUE のブール値を返すものについては、製品を ‘Defective’とマークします。FALSE の値を返し、1 月 12 日までの旧暦の週に製造されていない製品については、製品を ‘Faultless’ とマークします。