weekend - スクリプトおよびチャート関数
この関数は、date を含む暦週の最終日 (日曜日) の最後のミリ秒のタイムスタンプに相当する値を返します。デフォルトの出力形式は、スクリプトに設定されている DateFormat です。
構文:
WeekEnd(date [, period_no[, first_week_day]])
戻り値データ型: dual
weekend() 関数は、日付がどの週に該当するかを判断します。次に、その週の最後のミリ秒のタイムスタンプを日付形式で返します。週の最初の曜日は、 FirstWeekDay 環境変数によって決定されます。ただし、weekend() 関数ではこれより first_week_day 引数が優先されます。
引数 | 説明 |
---|---|
date | 評価する日付またはタイムスタンプ。 |
period_no | shift は整数で、値 0 は date を含む週を示します。shift の値が負の場合は過去の週を、正の場合は将来の週を示します。 |
first_week_day |
週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。 first_week_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値が考えられます。 システム変数の詳細については、FirstWeekDay を参照してください |
broken_weeks |
broken_weeks が指定されていない場合は、変数 BrokenWeeks の値を使用して、週が分離しているかどうかを定義します。 システム変数の詳細については、BrokenWeeks を参照してください |
使用に適しているケース
weekend() 関数は、ユーザーが指定した日付に週の残りの日数を使う計算を使用する場合に、数式の一部としてよく使われます例えば、その週にまだ発生していない利息の合計を計算したい場合などに使用できます。
例 | 結果 |
---|---|
weekend('01/10/2013') | 01/12/2013 23:59:59 を返します。 |
weekend('01/10/2013', -1) | 01/05/2013 23:59:59. を返します。 |
weekend('01/10/2013', 0, 1) | 01/14/2013 23:59:59 を返します。 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 1 – 基本的な例
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
-
DateFormat システム変数形式 (MM/DD/YYYY) で提供されている日付項目。
-
トランザクションが発生する週の終わりのタイムスタンプを返す、項目 [end_of_week] の作成。
ロード スクリプト
SET FirstWeekDay=6;
Transactions:
Load
*,
weekend(date) as end_of_week,
timestamp(weekend(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
日付 | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
[end_of_week] 項目は、weekend() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
weekend() 関数は、日付値がどの週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。
トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekend() 関数は、2 月 5 日後の最初の土曜日、つまり週の終わりが 2 月 5 日であったことを特定します。そのため、そのトランザクションの end_of_week 値がその日の最後のミリ秒 2 月 5 日 11:59:59 PM を返します。
例 2 – period_no
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
最初の例と同じデータセットとシナリオ。
-
トランザクションが発生する前の週の始めのタイムスタンプを返す、項目 [previous_week_end] の作成。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,-1) as previous_week_end,
timestamp(weekend(date,-1)) as previous_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_week_end
-
previous_week_end_timestamp
日付 | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 11:59:59 PM |
1/19/2022 | 01/15/2022 | 1/15/2022 11:59:59 PM |
2/5/2022 | 01/29/2022 | 1/29/2022 11:59:59 PM |
2/28/2022 | 02/26/2022 | 2/26/2022 11:59:59 PM |
3/16/2022 | 03/12/2022 | 3/12/2022 11:59:59 PM |
4/1/2022 | 03/26/2022 | 3/26/2022 11:59:59 PM |
5/7/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
5/16/2022 | 05/14/2022 | 5/14/2022 11:59:59 PM |
6/15/2022 | 06/11/2022 | 6/11/2022 11:59:59 PM |
6/26/2022 | 06/25/2022 | 6/25/2022 11:59:59 PM |
7/9/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/22/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/23/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/27/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
8/2/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/8/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/19/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
9/26/2022 | 09/24/2022 | 9/24/2022 11:59:59 PM |
10/14/2022 | 10/08/2022 | 10/8/2022 11:59:59 PM |
10/29/2022 | 10/22/2022 | 10/22/2022 11:59:59 PM |
この例では、-1 の period_no が weekend() 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生する週を識別します。次に、1 週間前を調べて、その週の最後のミリ秒を識別します。
トランザクション 8196 は 6 月 15 日に発生しました。weekend() 関数は、週が 6 月 12 日に開始することを特定します。そのため、前の週は 6 月 11 日 11:59:59 PM に開始されます。これは、[previous_week_end] 項目に対して返される値です。
例 3 – first_week_day
概要
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例では、勤務週の初日として火曜日を設定する必要があります。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,0,1) as end_of_week,
timestamp(weekend(date,0,1)) 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
日付 | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/10/2022 | 1/10/2022 11:59:59 PM |
1/19/2022 | 01/24/2022 | 1/24/2022 11:59:59 PM |
2/5/2022 | 02/07/2022 | 2/7/2022 11:59:59 PM |
2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
3/16/2022 | 03/21/2022 | 3/21/2022 11:59:59 PM |
4/1/2022 | 04/04/2022 | 4/4/2022 11:59:59 PM |
5/7/2022 | 05/09/2022 | 5/9/2022 11:59:59 PM |
5/16/2022 | 05/16/2022 | 5/16/2022 11:59:59 PM |
6/15/2022 | 06/20/2022 | 6/20/2022 11:59:59 PM |
6/26/2022 | 06/27/2022 | 6/27/2022 11:59:59 PM |
7/9/2022 | 07/11/2022 | 7/11/2022 11:59:59 PM |
7/22/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/23/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/27/2022 | 08/01/2022 | 8/1/2022 11:59:59 PM |
8/2/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/8/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/19/2022 | 08/22/2022 | 8/22/2022 11:59:59 PM |
9/26/2022 | 09/26/2022 | 9/26/2022 11:59:59 PM |
10/14/2022 | 10/17/2022 | 10/17/2022 11:59:59 PM |
10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
この場合、first_week_date 引数 1 が weekend() 関数で使用されているため、週の初日として火曜日を設定します。
トランザクション 8191 は、2 月 5 日に発生しました。weekend() 関数は、この日付後の最初の月曜日、つまり週の最後および返された値は 2 月 6 日 11:59:59 PM であることを特定します。
例 4 – チャート オブジェクトの例
概要
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクションが発生した四半期の終わりのタイムスタンプを返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
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。
トランザクションが発生する週の初めを計算するには、次のメジャーを計算します。
-
=weekend(date)
-
=timestamp(weekend(date))
日付 | =weekend(date) | =timestamp(weekend(date)) |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
「end_of_week」メジャーは、weekend() 関数を使用し、関数の引数として日付項目を渡すことにより、チャート オブジェクトで作成されます。weekend() 関数は、日付値がどの週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。
トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekend() 関数は、2 月 5 日後の最初の土曜日、つまり週の終わりが 2 月 5 日であったことを特定します。そのため、そのトランザクションの end_of_week 値がその日の最後のミリ秒 2 月 5 日 11:59:59 PM を返します。
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「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
];
結果
次の手順を実行します。
-
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
employee_id
-
employee_name
-
-
次に、メジャーを作成して、累積利息を計算します。
=(weekend(today(1))-today(1))*avg_daily_claim
-
メジャーの [数値書式] を [通貨] に設定します。
employee_id | employee_name | =(weekend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $90.00 |
183 | Deryck | $75.00 |
184 | Dexter | $75.00 |
185 | Sydney | $162.00 |
186 | Agatha | $108.00 |
weekend() 関数は、今日の日付を唯一の引数として使用することにより、現在の週の終了日を返します。次に、週の終了日から今日の日付を引くことによって、数式は今週の残りの日数を返します。
次に、この値に各従業員による 1 日あたりの平均経費請求額を乗算して、週の残り期間に各従業員が行うと予想される請求の推定額を計算します。