weekend - スクリプトおよびチャート関数このページ上
この関数は、date を含む暦週の最終日の最後のミリ秒のタイムスタンプに相当する値を返します。デフォルトの出力形式は、スクリプトに設定されている DateFormat です。
構文:
WeekEnd( timestamp [, period_no [, first_week_day ]] )
戻り値データ型: dual
weekend() 関数は、日付がどの週に該当するかを判断します。次に、その週の最後のミリ秒のタイムスタンプを日付形式で返します。週の最初の曜日は、 FirstWeekDay 環境変数 によって決定されます。ただし、weekend() 関数ではこれより first_week_day 引数が優先されます。
引数
timestamp
評価する日付またはタイムスタンプ。
period_no
shift は整数で、値 0 は date を含む週を示します。shift の値が負の場合は過去の週を、正の場合は将来の週を示します。
first_week_day
週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。
first_week_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値が考えられます。
システム変数の詳細については、FirstWeekDay を参照してください
使用に適しているケース
weekend() 関数は、ユーザーが指定した日付に週の残りの日数を使う計算を使用する場合に、数式の一部としてよく使われます例えば、その週にまだ発生していない利息の合計を計算したい場合などに使用できます。
次の例は下記の内容を推測します。
SET FirstWeekDay=0;
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 ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「アプリとスクリプトの地域設定の変更 」を参照してください。
アプリの既定地域設定は、ユーザー プロファイルに基づいています。これらの地域の書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。
アプリの作成者は、作成するアプリの既定の地域を設定できます。詳細については、「Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定 」を参照してください。
週数と週番号の ISO 設定を希望する場合、スクリプトに必ず次を組み込むようにしてください。
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
US 設定を希望する場合、スクリプトに必ず次を組み込むようにしてください。
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
上記の例では、weekend() 関数から次のような結果になります。
Weekend 関数の例
Date
ISO week end
US week end
2020 年 12 月 26 日 (土)
2020-12-27
12/26/2020
2020 年 12 月 27 日 (日)
2020-12-27
1/2/2021
2020 年 12 月 28 日 (月)
2021-01-03
1/2/2021
2020 年 12 月 29 日 (火)
2021-01-03
1/2/2021
2020 年 12 月 30 日 (水)
2021-01-03
1/2/2021
2020 年 12 月 31 日 (木)
2021-01-03
1/2/2021
2021 年 1 月 1 日 (金)
2021-01-03
1/2/2021
2021 年 1 月 2 日 (土)
2021-01-03
1/2/2021
2021 年 1 月 3 日 (日)
2021-01-03
1/9/2021
2021 年 1 月 4 日 (月)
2021-01-10
1/9/2021
2021 年 1 月 5 日 (火)
2021-01-10
1/9/2021
情報メモ ISO 列は日曜日、US 列は土曜日が週末となります。
例 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
結果テーブル
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() 関数は、日付値がどの週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。
weekend() 関数の図、基本的な例
トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekend() 関数は、2 月 5 日後の最初の土曜日、つまり週の終わりが 2 月 5 日であったことを特定します。そのため、そのトランザクションの end_of_week 値がその日の最後のミリ秒 2 月 5 日 11:59:59 PM を返します。
例 2 – period_no
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
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 週間前を調べて、その週の最後のミリ秒を識別します。
weekend() 関数の図、period_no の例
トランザクション 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
結果テーブル
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() 関数で使用されているため、週の初日として火曜日を設定します。
weekend() 関数、first_week_day 例の図
トランザクション 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 。
トランザクションが発生する週の初めを計算するには、次のメジャーを計算します。
結果テーブル
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() 関数は、日付値がどの週に該当するかを識別し、その週の最後のミリ秒のタイムスタンプを返します。
weekend() 関数の図、チャート オブジェクトの例
トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekend() 関数は、2 月 5 日後の最初の土曜日、つまり週の終わりが 2 月 5 日であったことを特定します。そのため、そのトランザクションの end_of_week 値がその日の最後のミリ秒 2 月 5 日 11:59:59 PM を返します。
例 5 – シナリオ
ロード スクリプトとチャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
エンド ユーザーは、従業員 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
メジャーの [数値書式 ] を [通貨 ] に設定します。
結果テーブル
182
Mark
$90.00
183
Deryck
$75.00
184
Dexter
$75.00
185
Sydney
$162.00
186
Agatha
$108.00
weekend() 関数は、今日の日付を唯一の引数として使用することにより、現在の週の終了日を返します。次に、週の終了日から今日の日付を引くことによって、数式は今週の残りの日数を返します。
次に、この値に各従業員による 1 日あたりの平均経費請求額を乗算して、週の残り期間に各従業員が行うと予想される請求の推定額を計算します。