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

この関数は、date を含む週周期の最終日の最後のミリ秒のタイムスタンプに相当する値を返します。Qlik Sense の旧暦の週は、1 月 1 日を週の初日として数えるよう定義され、1 年の最終週を除いて正確に 7 日構成となります。

構文:

LunarweekEnd(date[, period\_no[, first\_week\_day]])

戻り値データ型： デュアル

`lunarweekend()` 関数の図の例

`lunarweekend()` 関数の図の例

`lunarweekend()`lunarweekend() 関数の図の例 ![ここに代替テキストを追加します.....!!!!!!](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-general.png)

`lunarweekend()` 関数は、`date` がどの旧暦の週に当たるかを決定します。次に、その週の最後のミリ秒のタイムスタンプを日付形式で返します。

引数

| 引数 | 説明 |
| --- | --- |
| date | 評価する日付またはタイムスタンプ。 |
| period\_no | period\_no は整数または計算結果が整数になる数式で、値 0 は date を含む週周期を示します。period\_no の値が負の場合は過去の週周期を、正の場合は将来の週周期を示します。 |
| first\_week\_day | 0 未満または 0 よりも大きい補正値。日数または 1 日未満の長さ、またはその両方を指定して、年の開始時点を変更できます。 |

## lunarweekend の使用目的

`lunarweekend()` 関数は、ユーザーがまだ発生していない週の端数を計算に使用する場合に、数式の一部として一般的に使用されます。`weekend()` 関数と異なり、各暦年の旧暦最終週は 12 月 31 日に終了します。例えば `lunarweekend()` 関数は、その週にまだ発生していない利息を計算するために使用することができます。

関数の例

| 例 | 結果 |
| --- | --- |
| `lunarweekend('01/12/2013')` | 01/14/2013 23:59:59 を返します。 |
| `lunarweekend('01/12/2013', -1)` | 01/07/2013 23:59:59 を返します。 |
| `lunarweekend('01/12/2013', 0, 1)` | 01/15/2013 23:59:59 を返します。 |

## リージョンの設定

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

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

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

概要

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

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

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

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

* トランザクションが発生する旧暦の週の終わりのタイムスタンプを返す、項目 [`  end_of_week `] の作成。

ロード スクリプト

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

Transactions:
    Load
        *,
        lunarweekend(date) as end_of_week,
        timestamp(lunarweekend(date)) as end_of_week_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* `date`

* `end_of_week`

* `end_of_week_timestamp`

結果テーブル

| date | end\_of\_week | end\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
| 1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
| 2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
| 2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
| 3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
| 5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
| 5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
| 6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
| 6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
| 7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
| 7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
| 7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
| 7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
| 8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
| 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
| 10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
| 10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |

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

`lunarweekend()` 関数は、日付値がどの旧暦週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。

`lunarweekend()` 関数の図、追加の引数がない例

`lunarweekend()` 関数の図、追加の引数がない例

`lunarweekend()`lunarweekend() 関数の図、追加の引数がない例 ![lunarweekend 関数が、各トランザクションの入力日を、その日付が発生する旧暦の週の最後のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-no-add-arg.png)

トランザクション 8189 は 1 月 19 日に発生しました。`lunarweekend()` 関数は、旧暦の週が 1 月 15 日に開始することを特定します。そのため、トランザクションの `end_of_week` 値は、旧暦の週の最後のミリ秒である 1 月 21 日 11:59:59 PM を返します。

## 例 2 – period\_no

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

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

概要

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

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

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

* トランザクションが発生する前の旧暦の週の終わりのタイムスタンプを返す、項目 [`previous_lunar_week_end`] の作成。

ロード スクリプト

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

Transactions:
    Load
        *,
        lunarweekend(date,-1) as previous_lunar_week_end,
        timestamp(lunarweekend(date,-1)) as previous_lunar_week_end_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* `date`

* `previous_lunar_week_end`

* `previous_lunar_week_end_timestamp`

結果テーブル

| date | previous\_lunar\_week\_end | previous\_lunar\_week\_end\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 1/19/2022 | 01/14/2022 | 1/14/2022 11:59:59 PM |
| 2/5/2022 | 02/04/2022 | 2/4/2022 11:59:59 PM |
| 2/28/2022 | 02/25/2022 | 2/25/2022 11:59:59 PM |
| 3/16/2022 | 03/11/2022 | 3/18/2022 11:59:59 PM |
| 4/1/2022 | 03/25/2022 | 3/25/2022 11:59:59 PM |
| 5/7/2022 | 05/06/2022 | 5/6/2022 11:59:59 PM |
| 5/16/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
| 6/15/2022 | 06/10/2022 | 6/10/2022 11:59:59 PM |
| 6/26/2022 | 06/24/2022 | 6/24/2022 11:59:59 PM |
| 7/9/2022 | 07/08/2022 | 7/8/2022 11:59:59 PM |
| 7/22/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
| 7/23/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
| 7/27/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
| 8/2/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
| 8/8/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/19/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 9/26/2022 | 09/23/2022 | 9/23/2022 11:59:59 PM |
| 10/14/2022 | 10/07/2022 | 10/7/2022 11:59:59 PM |
| 10/29/2022 | 10/28/2022 | 10/28/2022 11:59:59 PM |

この例では、-1 の `period_no` が `lunarweekend()` 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生した旧暦の週を識別します。次に、1 週間前にずらして、旧暦のその週の最後のミリ秒を識別します。

`lunarweekend()` 関数の図、period\_no の例

`lunarweekend()` 関数の図、period\_no の例

`lunarweekend()`lunarweekend() 関数の図、period\_no の例 ![lunarweekend 関数が、各トランザクションの入力日を、その日付が発生する旧暦の週の最後のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-period-no.png)

トランザクション 8189 は 1 月 19 日に発生しました。`lunarweekend()` 関数は、旧暦の週が 1 月 15 日に開始することを特定します。そのため、旧暦の前の週は 1 月 8 日に開始され、1 月 14 日の 11:59:59 PM に終了しました。これは、[`previous_lunar_week_end`] 項目に対して返される値です。

## 例 3 – first\_week\_day

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

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

概要

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

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

ロード スクリプト

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

Transactions:
    Load
        *,
        lunarweekend(date,0,4) as end_of_week,
timestamp(lunarweekend(date,0,4)) as end_of_week_timestamp
;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* `date`

* `end_of_week`

* `end_of_week_timestamp`

結果テーブル

| date | end\_of\_week | end\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/11/2022 | 1/11/2022 11:59:59 PM |
| 1/19/2022 | 01/25/2022 | 1/25/2022 11:59:59 PM |
| 2/5/2022 | 02/08/2022 | 2/8/2022 11:59:59 PM |
| 2/28/2022 | 03/01/2022 | 3/1/2022 11:59:59 PM |
| 3/16/2022 | 03/22/2022 | 3/22/2022 11:59:59 PM |
| 4/1/2022 | 04/05/2022 | 4/5/2022 11:59:59 PM |
| 5/7/2022 | 05/10/2022 | 5/10/2022 11:59:59 PM |
| 5/16/2022 | 05/17/2022 | 5/17/2022 11:59:59 PM |
| 6/15/2022 | 06/21/2022 | 6/21/2022 11:59:59 PM |
| 6/26/2022 | 06/28/2022 | 6/28/2022 11:59:59 PM |
| 7/9/2022 | 07/12/2022 | 7/12/2022 11:59:59 PM |
| 7/22/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
| 7/23/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
| 7/27/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
| 8/2/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
| 8/8/2022 | 08/09/2022 | 8/9/2022 11:59:59 PM |
| 8/19/2022 | 08/23/2022 | 8/23/2022 11:59:59 PM |
| 9/26/2022 | 09/27/2022 | 9/27/2022 11:59:59 PM |
| 10/14/2022 | 10/18/2022 | 10/18/2022 11:59:59 PM |
| 10/29/2022 | 11/01/2022 | 11/1/2022 11:59:59 PM |

このインスタンスでは、`first_week_date` 引数である 4 が `lunarweekend()` 関数で使用されるため、1 月 1 日から 1 月 5 日に年の初めがオフセットされます。

`lunarweekend()` 関数、first\_week\_day 例の図

`lunarweekend()` 関数、first\_week\_day 例の図

`lunarweekend()`lunarweekend() 関数、first\_week\_day 例の図 ![lunarweekend 関数が、各トランザクションの入力日を、その日付が発生する旧暦の週の最後のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-first-week-day.png)

トランザクション 8189 は 1 月 19 日に発生しました。旧暦の週が 1 月 5 日に始まる前、`lunarweekend()` 関数は 1 月 19 日を含む旧暦の週も 1 月 19 日に始まることを特定します。そのため、旧暦の週の終わりは 1 月 25 日 11:59:59 PM に当たります。これは、[`end_of_week`] 項目に対して返される値です。

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

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

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

概要

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

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

ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクションが発生した旧暦の週の終わりのタイムスタンプを返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。

ロード スクリプト

```
Transactions:
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

次のメジャーを追加します。

=lunarweekend(date)

=timestamp(lunarweekend(date))

結果テーブル

| date | =lunarweekend(date) | =timestamp(lunarweekend(date)) |
| --- | --- | --- |
| 1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
| 1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
| 2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
| 2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
| 3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
| 5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
| 5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
| 6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
| 6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
| 7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
| 7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
| 7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
| 7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
| 8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
| 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
| 10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
| 10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |

[end\_of\_week] メジャーは、lunarweekend() 関数を使用し、関数の引数として [date] 項目を渡すことにより、チャート オブジェクトで作成されます。

lunarweekend() 関数は、日付値がどの旧暦週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。

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

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

lunarweekend()lunarweekend() 関数の図、チャート オブジェクトの例 ![lunarweekend 関数が、各トランザクションの入力日を、その日付が発生する旧暦の週の最後のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-chart-object.png)

トランザクション 8189 は 1 月 19 日に発生しました。lunarweekend() 関数は、旧暦の週が 1 月 15 日に開始することを特定します。そのため、トランザクションの end\_of\_week 値は、旧暦の週の最後のミリ秒である 1 月 21 日 11:59:59 PM を返します。

## 例 5 – シナリオ

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

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

概要

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

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

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

* 従業員 ID、従業員名および各従業員の平均日次経費請求。

エンド ユーザーは、従業員 ID と従業員名別に、旧暦のその週の残りの期間にまだ発生する推定経費請求を表示するグラフ オブジェクトを求めています。

ロード スクリプト

```
Employee_Expenses:
Load
*
Inline 
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5 
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
```

結果

次の手順を実行します。

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

2. 次の項目を軸として追加します。

   * employee\_id

   * employee\_name

3. 次に、次のメジャーを作成して、累積利息を計算します。

   =(lunarweekend(today(1))-today(1))\*avg\_daily\_claim

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

結果テーブル

| employee\_id | employee\_name | =(lunarweekend(today(1))-today(1))\*avg\_daily\_claim |
| --- | --- | --- |
| 182 | Mark | $75.00 |
| 183 | Deryck | $62.50 |
| 184 | Dexter | $62.50 |
| 185 | Sydney | $135.00 |
| 186 | Agatha | $90.00 |

lunarkweekend() 関数は、今日の日付を唯一の引数として使用することにより、現在の旧暦の週の終了日を返します。次に、旧暦の週の終了日から今日の日付を引くことによって、数式は今週の残りの日数を返します。

次に、この値に各従業員による 1 日あたりの平均経費請求額を乗算して、旧暦の週の残り期間に各従業員が行うと予想される請求の推定額を計算します。