weekname - スクリプトおよびチャート関数
この関数は、date を含む週の初日の最初のミリ秒のタイムスタンプに対応する数値を基底として、年と週番号を表示する値を返します。
構文:
WeekName(date[, period_no[,first_week_day]])
weekname() 関数は、日付が属する週を判別し、その週の週番号と年を返します。週の最初の曜日は、 FirstWeekDay システム変数によって決定されます。ただし、 weekname() 関数で first_week_day 引数を使用して、週の最初の曜日を変更することもできます。
既定で、Qlik Sense アプリケーションは分割された週 (BrokenWeeks システム変数で定義) を使用するため、発生日数に関係なく週数のカウントは 1 月 1 日に始まり、FirstWeekDay システム変数の前日に終了します。
ただし、アプリケーションが連続した週を使用している場合、第 1 週は前年または 1 月の最初の数日間に開始できます。これは、 ReferenceDay および FirstWeekDay システム変数の使用方法によって異なります。
使用に適しているケース
weekname() 関数は、集計を週単位で比較する場合に便利です。
たとえば、製品の総売上高を週ごとに表示する場合などが考えられます。アプリケーションで BrokenWeeks 環境変数との一貫性を維持するには、 weekname() の代わりに lunarweekname() を使用します。アプリケーションが連続週を使用している場合、第 1 週には前年の 12 月の日付が含まれるか、今年の 1 月の日付が除外されます。アプリケーションが分割された週を使用している場合、第 1 週 に含まれる日数が 7 日間を下回ることがあります。
戻り値データ型: dual
引数 | 説明 |
---|---|
date | 評価する日付またはタイムスタンプ。 |
period_no | shift は整数で、値 0 は date を含む週を示します。shift の値が負の場合は過去の週を、正の場合は将来の週を示します。 |
first_week_day |
週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。 first_week_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値を使用できます。 システム変数の詳細については、FirstWeekDay を参照してください。 |
次の値を使用して、first_week_day 引数で週が始まる日を設定できます。
毎日 | 値 |
---|---|
月曜日 | 0 |
火曜日 | 1 |
水曜日 | 2 |
木曜日 | 3 |
金曜日 | 4 |
土曜日 | 5 |
日曜日 | 6 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 | 結果 |
---|---|
weekname('01/12/2013') | 2013/02 を返します。 |
weekname('01/12/2013', -1) | Returns 2013/01. |
weekname('01/12/2013', 0, 1) | 2013/02 を返します。 |
例 1 – 追加の引数がない日付
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2021 年の最後の週と 2022 年の最初の週のトランザクションを含むデータセットは、Transactions というテーブルにロードされます。
-
MM/DD/YYYY 形式に設定された DateFormat システム変数。
-
1 に設定された BrokenWeeks システム変数。
-
6 に設定された FirstWeekDay システム変数。
-
以下を含む先行ロード:
-
項目「week_number」として設定された weekday() 関数は、トランザクションが発生した年と週番号を返します。
-
「week_day」という項目として設定される weekname() 関数は、各トランザクション日付の平日の値を表示します。
-
ロード スクリプト
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
week_day
-
week_number
ID | 日付 | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | 月 | 2021/53 |
8184 | 12/28/2021 | 火 | 2021/53 |
8185 | 12/29/2021 | 水 | 2021/53 |
8186 | 12/30/2021 | 木 | 2021/53 |
8187 | 12/31/2021 | 金 | 2021/53 |
8188 | 01/01/2022 | 土 | 2022/01 |
8189 | 01/02/2022 | 日 | 2022/02 |
8190 | 01/03/2022 | 月 | 2022/02 |
8191 | 01/04/2022 | 火 | 2022/02 |
8192 | 01/05/2022 | 水 | 2022/02 |
8193 | 01/06/2022 | 木 | 2022/02 |
8194 | 01/07/2022 | 金 | 2022/02 |
8195 | 01/08/2022 | 土 | 2022/02 |
8196 | 01/09/2022 | 日 | 2022/03 |
8197 | 01/10/2022 | 月 | 2022/03 |
8198 | 01/11/2022 | 火 | 2022/03 |
8199 | 01/12/2022 | 水 | 2022/03 |
8200 | 01/13/2022 | 木 | 2022/03 |
8201 | 01/14/2022 | 金 | 2022/03 |
「week_number」項目は、weekname() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
weekname() 関数は、最初に日付値が属する週を識別し、週番号のカウントとトランザクションが行われた年を返します。
FirstWeekDay システム変数は、日曜日を最初の曜日に設定します。BrokenWeeks システム変数は、アプリケーションが分割週を使用するように設定します。つまり、第 1 週 は 1 月 1 日に始まります。
第 1 週 は土曜日である 1 月 1 日に始まるため、この日に発生したトランザクションは値 2022/01 (年と週番号) を返します。
アプリケーションが分割された週を使用しており、最初の平日が日曜日であるため、1 月 2 日~1 月 8 日に発生したトランザクションは値 2022/02 を返します (2022 年の第 2 週)。「week_number」項目の値 2022/02 を返します。
例 2 – period_no
概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例のタスクは、トランザクションが発生する前の年と週番号を返す項目「previous_week_number」を作成することです。
データ ロード エディター を開き、次のロード スクリプトを新しいタブに追加します。
ロード スクリプト
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
week_day
-
week_number
ID | 日付 | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | 月 | 2021/52 |
8184 | 12/28/2021 | 火 | 2021/52 |
8185 | 12/29/2021 | 水 | 2021/52 |
8186 | 12/30/2021 | 木 | 2021/52 |
8187 | 12/31/2021 | 金 | 2021/52 |
8188 | 01/01/2022 | 土 | 2021/52 |
8189 | 01/02/2022 | 日 | 2021/53 |
8190 | 01/03/2022 | 月 | 2021/53 |
8191 | 01/04/2022 | 火 | 2021/53 |
8192 | 01/05/2022 | 水 | 2021/53 |
8193 | 01/06/2022 | 木 | 2021/53 |
8194 | 01/07/2022 | 金 | 2021/53 |
8195 | 01/08/2022 | 土 | 2022/01 |
8196 | 01/09/2022 | 日 | 2022/02 |
8197 | 01/10/2022 | 月 | 2022/02 |
8198 | 01/11/2022 | 火 | 2022/02 |
8199 | 01/12/2022 | 水 | 2022/02 |
8200 | 01/13/2022 | 木 | 2022/02 |
8201 | 01/14/2022 | 金 | 2022/02 |
-1 の period_no が weekname() 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生した週を識別します。次に、1 週間前を調べて、その週の最初のミリ秒を識別します。
トランザクション 8192 は 2022 年 1 月 5 日に発生しました。 weekname() 関数は、2021 年 12 月 30 日の 1 週間前を検索し、その日付の週番号と年 – 2021/53 を返します。
例 3 – first_week_day
概要
最初の例と同じデータセットとシナリオが使用されます。
ただしこの例では、会社の方針により、週の勤務日は火曜日に始まります。
データ ロード エディター を開き、次のロード スクリプトを新しいタブに追加します。
ロード スクリプト
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
week_day
-
week_number
ID | 日付 | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | 月 | 2021/52 |
8184 | 12/28/2021 | 火 | 2021/53 |
8185 | 12/29/2021 | 水 | 2021/53 |
8186 | 12/30/2021 | 木 | 2021/53 |
8187 | 12/31/2021 | 金 | 2021/53 |
8188 | 01/01/2022 | 土 | 2022/01 |
8189 | 01/02/2022 | 日 | 2022/01 |
8190 | 01/03/2022 | 月 | 2022/01 |
8191 | 01/04/2022 | 火 | 2022/02 |
8192 | 01/05/2022 | 水 | 2022/02 |
8193 | 01/06/2022 | 木 | 2022/02 |
8194 | 01/07/2022 | 金 | 2022/02 |
8195 | 01/08/2022 | 土 | 2022/02 |
8196 | 01/09/2022 | 日 | 2022/02 |
8197 | 01/10/2022 | 月 | 2022/02 |
8198 | 01/11/2022 | 火 | 2022/03 |
8199 | 01/12/2022 | 水 | 2022/03 |
8200 | 01/13/2022 | 木 | 2022/03 |
8201 | 01/14/2022 | 金 | 2022/03 |
1 の first_week_date 引数が weekname() 関数で使用されているため、火曜日が週の最初の曜日として使用されます。したがってこの関数では、2021 年の第 53 週が 12 月 28 日火曜日に始まると判断します。また、分割された週を使用するアプリケーションにより、第 1 週 は 2022 年 1 月 1 日に始まり、2022 年 1 月 3 日の月曜日の最後のミリ秒で終わります。
トランザクション 8192 は 2022 年 1 月 5 日に発生しました。したがって、火曜日の first_week_day パラメータを使用すると、 weekname() 関数は 'week_number' 項目の値 2022/02 を返します。
例 4 – チャート オブジェクトの例
概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した週の年番号を返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
SET BrokenWeeks=1;
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
=week_day (date)
トランザクションが発生する週の初めを計算するには、次のメジャーを作成します。
=weekname(date)
ID | 日付 | =weekday(date) | =weekname(date) |
---|---|---|---|
8183 | 12/27/2021 | 月 | 2021/53 |
8184 | 12/28/2021 | 火 | 2021/53 |
8185 | 12/29/2021 | 水 | 2021/53 |
8186 | 12/30/2021 | 木 | 2021/53 |
8187 | 12/31/2021 | 金 | 2021/53 |
8188 | 01/01/2022 | 土 | 2022/01 |
8189 | 01/02/2022 | 日 | 2022/02 |
8190 | 01/03/2022 | 月 | 2022/02 |
8191 | 01/04/2022 | 火 | 2022/02 |
8192 | 01/05/2022 | 水 | 2022/02 |
8193 | 01/06/2022 | 木 | 2022/02 |
8194 | 01/07/2022 | 金 | 2022/02 |
8195 | 01/08/2022 | 土 | 2022/02 |
8196 | 01/09/2022 | 日 | 2022/03 |
8197 | 01/10/2022 | 月 | 2022/03 |
8198 | 01/11/2022 | 火 | 2022/03 |
8199 | 01/12/2022 | 水 | 2022/03 |
8200 | 01/13/2022 | 木 | 2022/03 |
8201 | 01/14/2022 | 金 | 2022/03 |
「week_number」項目は、weekname() 関数を使用し、関数の引数として日付項目を渡すことにより、チャート オブジェクトのメジャーとして作成されます。
weekname() 関数は、最初に日付値が属する週を識別し、週番号のカウントとトランザクションが行われた年を返します。
FirstWeekDay システム変数は、日曜日を最初の曜日に設定します。BrokenWeeks システム変数は、アプリケーションが分割週を使用するように設定します。つまり、第 1 週 は 1 月 1 日に始まります。
アプリケーションが分割された週を使用しており、最初の平日が日曜日であるため、1 月 2 日~1 月 8 日に発生するトランザクションは値 2022/02、つまり 2022 年の第 2 週 を返します。トランザクション 8192 は 1 月 5 日に発生し、「week_number」項目に対して値 2022/02 を返すことに注意してください。
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2019 年の最後の週と 2020 年の最初の週のトランザクションを含むデータセットは、Transactions というテーブルにロードされます。
-
0 に設定された BrokenWeeks システム変数。
-
2 に設定された ReferenceDay システム変数。
-
MM/DD/YYYY 形式に設定された DateFormat システム変数。
ロード スクリプト
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
結果
データをロードしてシートを開きます。新しいテーブルを作成します。
次の式を使用して計算軸を作成します。
=weekname(date)
総売上を計算するには、次の集計メジャーを作成します。
=sum(amount)
メジャーの [数値書式] を [通貨] に設定します。
weekname(date) | =sum(amount) |
---|---|
2019/52 | $125.69 |
2020/01 | $346.51 |
2020/02 | $347.57 |
2020/03 | $122.01 |
このシナリオで weekname() 関数を使用した結果を示すには、次の項目を軸として追加します。
date
weekname(date) | 日付 | =sum(amount) |
---|---|---|
2019/52 | 12/27/2019 | $58.27 |
2019/52 | 12/28/2019 | $67.42 |
2020/01 | 12/29/2019 | $23.80 |
2020/01 | 12/30/2019 | $82.06 |
2020/01 | 12/31/2019 | $40.56 |
2020/01 | 01/01/2020 | $37.23 |
2020/01 | 01/02/2020 | $17.17 |
2020/01 | 01/03/2020 | $88.27 |
2020/01 | 01/04/2020 | $57.42 |
2020/02 | 01/05/2020 | $53.80 |
2020/02 | 01/06/2020 | $82.06 |
2020/02 | 01/07/2020 | $40.56 |
2020/02 | 01/08/2020 | $53.67 |
2020/02 | 01/09/2020 | $26.63 |
2020/02 | 01/10/2020 | $72.48 |
2020/02 | 01/11/2020 | $18.37 |
2020/03 | 01/12/2020 | $45.26 |
2020/03 | 01/13/2020 | $58.23 |
2020/03 | 01/14/2020 | $18.52 |
アプリケーションは連続した週を使用し、ReferenceDay システム変数のために第 1 週目は 1 月に最低 2 日間必要であるため、2020 年の第 1 週目には 2019 年 12 月 29 日からのトランザクションが含まれます。