weekyear - スクリプトおよびチャート関数このページ上
この関数は、環境変数に基づいた週番号が含まれる年を返します。週番号の範囲は、1 からおよそ 52 となります。
構文:
weekyear( timestamp [, first_week_day [, broken_weeks [, reference_day]]] )
戻り値データ型: integer
引数
timestamp
評価する日付またはタイムスタンプ。
first_week_day
週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。
first_week_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値を使用できます。
システム変数の詳細については、FirstWeekDay を参照してください。
broken_weeks
broken_weeks が指定されていない場合は、変数BrokenWeeks の値を使用して、週が分離しているかどうかを定義します。
システム変数の詳細については、BrokenWeeks を参照してください
reference_day
reference_day が指定されていない場合は、変数 ReferenceDay の値を使用して、第 1 週を定義する参照日として設定する 1 月の日を定義します。デフォルトでは、Qlik Sense 関数は 4 を参照日として使用します。これは、第 1 週に必ず 1 月 4 日が含まれる、または第 1 週に少なくとも 1 月の 4 日間が常に含まれることを意味します。
システム変数の詳細については、ReferenceDay を参照してください
weekyear() 関数は、日付が年のどの週に該当するかを判断します。次に、その週番号に対応する年を返します。
BrokenWeeks が 0 (false) に設定されると、weekyear() が year() と同じ結果を返します。
weekyear() 関数範囲の図
ただし、BrokenWeeks システム変数が未分離の週を使用するように設定されている場合、ReferenceDay システム変数で指定した値に基づいて、第 1 週は 1 月の特定の日数のみを含むことになります。
例えば、ReferenceDay 値 4 が使用される場合、第 1 週は 1 月に少なくとも 4 日を含む必要があります。第 1 週が前年 12 月の日付を含むことも、1 年の最後の週番号が翌年 1 月の日付を含むことも考えられます。このような状況では、weekyear() 関数は year() 関数に異なる値を返します。
未分離の週を使用した場合の、weekyear() 関数の範囲の図
使用に適しているケース
weekyear() 関数は、集計を年単位で比較する場合に便利です。たとえば、製品の総売上高を年ごとに表示する場合などが考えられます。ユーザーがアプリで BrokenWeeks 変数との一貫性を維持したい場合は、year() ではなく weekyear() 関数が選択されます。
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
関数の例
例
結果
weekyear('12/30/1996',0,0,4)
1997 を返します (1997 年の第 1 週は 12/30/1996 に開始するため)
weekyear('01/02/1997',0,0,4)
1997 を返します
weekyear('12/28/1997',0,0,4)
1997 を返します
weekyear('12/30/1997',0,0,4)
1998 を返します (1998 年の第 1 週は 12/29/1997 に開始するため)
weekyear('01/02/1999',0,0,4)
1998 を返します (1998 年の第 53 週は 01/03/1999 に終了するため)
例 1 - 分離された週
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET BrokenWeeks=1;
Transactions:
Load
*,
week(date) as week,
weekyear(date) as week_year
;
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
ID
日付
週
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
[week_year ] 項目は、weekyear() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
BrokenWeeks システム変数は 1 に設定されます。つまり、アプリは分離された週を使うということです。第 1 週は 1 月 1 日に始まります。
未分離の週を使用した場合の、weekyear() 関数の範囲の図
トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[week_year ] 項目に値 2021 を返します。
例 2 - 未分離の週
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただし、この例では、会社ポリシーで未分離の週を使用するよう定められています。
ロード スクリプト
SET BrokenWeeks=0;
Transactions:
Load
*,
week(date) as week,
weekyear(date) as week_year
;
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
ID
日付
週
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
53
2020
8181
01/02/2021
53
2020
8182
01/03/2021
1
2021
8183
01/04/2021
1
2021
8184
01/05/2021
1
2021
8185
01/06/2021
1
2021
8186
01/07/2021
1
2021
BrokenWeeks システム変数は 0 に設定されます。つまり、アプリケーションは未分離の週を使うということです。そのため、第 1 週は 1 月 1 日に始まる必要はありません。
2020 年の第 53 週は 2021 年の 1 月 2 日の終わりまで続き、2020 年の第 1 週は 2021 年 1 月 3 日の日曜日に始まります。
分離された週を使用した場合の、weekyear() 関数の範囲の図
トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[week_year ] 項目に値 2021 を返します。
例 3 – チャート オブジェクトの例
ロード スクリプトとチャートの数式
概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した年の週番号を返す計算は、アプリのチャートのメジャーとして作成されます。
ロード スクリプト
SET BrokenWeeks=1;
Transactions:
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
トランザクションが発生する週を計算するには、次のメジャーを作成します。
週番号に基づいてトランザクションが発生する年を計算するには、次のメジャーを作成します。
結果テーブル
ID
日付
週
week_year
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
[week_year ] 項目は、weekyear() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
BrokenWeeks システム変数は 1 に設定されます。つまり、アプリは分離された週を使うということです。第 1 週は 1 月 1 日に始まります。
未分離の週を使用した場合の、weekyear() 関数の範囲の図
トランザクション 8181 は、第 1 週である 1 月 2 日に発生します。そのため、[week_year ] 項目に値 2021 を返します。
例 4 – シナリオ
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
2021 年の最後の週と 2021 年の最初の週のトランザクションを含むデータセットで、Transactions というテーブルにロードされます。
0 に設定された BrokenWeeks 変数。これは、アプリが未分離の週を使うということです。
2 に設定された ReferenceDay 変数。これは、年が 1 月 2 日に始まり、1 月のうち少なくとも 2 日を含むということです。
1 に設定された FirstWeekDay 変数。これは、週の最初の日が火曜日であるということです。
会社ポリシーでは、分離された週を使用することになっています。エンド ユーザーは、年ごとの総売上高を示すチャートを求めています。アプリは未分離の週を使用し、第 1 週に 1 月の少なくとも 2 日を含めます。
ロード スクリプト
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET FirstWeekDay=1;
Transactions:
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
データをロードしてシートを開きます。新しいテーブルを作成します。
週番号に基づいてトランザクションが発生する年を計算するには、次のメジャーを作成します。
総売上を計算するには、次のメジャーを作成します。
メジャーの [数値書式 ] を [通貨 ] に設定します。
結果テーブル
weekyear(date)
=sum(amount)
2020
19.42
2021
373.37