makeweekdate - スクリプトおよびチャート関数
この関数は、年 YYYY、週 WW、曜日 D から算出された日付を返します。
構文:
MakeWeekDate(YYYY [ , WW [ , D ] ])
戻り値データ型: dual
makeweekdate() 関数はスクリプトとチャート関数の両方として使用できます。関数は、関数に渡されたパラメータに基づいて日付を計算します。曜日パラメータが省略されると、関数はその週の月曜日を返します。
makeweekdate() 関数は、BrokenWeek、ReferenceDay、または FirstWeekDay システム変数を考慮しません。第 1 週は 1 月の第一月曜日から始まります。例えば、2022 年の第 1 週は 1 月 3 日に開始します。
引数 | 説明 |
---|---|
YYYY | 年 (整数)。 |
WW |
週 (整数)。 週は正または負で、別の年の日付を返す場合は 52 を超過できます。 |
D |
曜日 (整数)。 曜日が指定されていない場合は、0 (月曜日) として処理されます。残りの曜日は、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日に割り当てられます。 |
使用に適しているケース
makeweekdate() 関数は、日付のリストを生成したり、入力データに年、週、曜日がある場合に日付を作成したりするために、データ生成用のスクリプトで一般的に使用されます。
例 | 結果 |
---|---|
makeweekdate(2014,6,6) | の戻り値: 02/09/2014 |
makeweekdate(2014,6,1) | の戻り値: 02/04/2014 |
makeweekdate(2014,6) | 02/03/2014 を返します (曜日が 0 として処理されます) |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 1 – 日を含む
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Sales というテーブルの 2022 年の週次売上合計を含むデータセット。
-
3 つの項目 year、week および sales に提供されたトランザクション日付。
-
makeweekdate() 関数を使って MM/DD/YYYY 形式でその週の金曜日の日付を返す、メジャー end_of_week を作成するのに使用される先行ロード。
返された日付が金曜日であることを証明するには、end_of_week 数式も曜日を示すため weekday() 関数で囲みます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
transaction_year
-
transaction_week
-
end_of_week
-
week_day
transaction_year | transaction_week | end_of_week | week_day |
---|---|---|---|
2022 | 01 | 01/07/2022 | Fri |
2022 | 02 | 01/14/2022 | Fri |
2022 | 03 | 01/21/2022 | Fri |
2022 | 04 | 01/28/2022 | Fri |
2022 | 05 | 02/04/2022 | Fri |
2022 | 06 | 02/11/2022 | Fri |
2022 | 07 | 02/18/2022 | Fri |
[end_of_week] 項目は、makeweekdate() 関数を使用して、前の Load ステートメントで作成されます。transaction_year、transaction_week 項目は、年および週の引数として関数を使って渡されます。値 4 は、日引数に使用されます。
次に関数はこれらの値を組み合わせて日付項目に変換し、DateFormat システム変数の形式で結果を返します。
makeweekdate() 関数とその引数もまた weekday() 関数で囲まれ、week_day 項目を返します。さらに、上記のテーブルでは、week_day 項目ではこれらの日付が金曜日に当たることがわかります。
例 2 – 日を除外
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Sales というテーブルの 2022 年の週次売上合計を含むデータセット。
-
3 つの項目 year、week および sales に提供されたトランザクション日付。
-
makeweekdate() 関数を使って、メジャー first_day_of_week を作成するのに使用される先行 load。これにより、MM/DD/YYYY 形式でその週の月曜日の日付が返されます。
返された日付が月曜日であることを証明するには、first_day_of_week 数式も曜日を示すため weekday() 関数で囲みます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
day(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
transaction_year
-
transaction_week
-
first_day_of_week
-
week_day
transaction_year | transaction_week | first_day_of_week | week_day |
---|---|---|---|
2022 | 01 | 01/03/2022 | 月 |
2022 | 02 | 01/10/2022 | 月 |
2022 | 03 | 01/17/2022 | 月 |
2022 | 04 | 01/24/2022 | 月 |
2022 | 05 | 01/31/2022 | 月 |
2022 | 06 | 02/07/2022 | 月 |
2022 | 07 | 02/14/2022 | 月 |
[first_day_of_week] 項目は、makeweekdate() 関数を使用して、前の Load ステートメントで作成されます。transaction_year と transaction_week パラメータは関数の引数として渡され、日パラメータはブランクのままとなります。
次に関数はこれらの値を組み合わせて日付項目に変換し、DateFormat システム変数の形式で結果を返します。
makeweekdate() 関数とその引数もまた weekday() 関数で囲まれ、week_day 項目を返します。上記のテーブルで分かるように、week_day 項目はこれらの日付が月曜日に当たらない (FirstWeekDay 変数が日曜日をその週の初日に設定しているにもかかわらず) ことを示していますが、これは makeweekdate() 関数の日パラメータがブランクのままになっているためです。
例 3 – チャート オブジェクトの例
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Sales というテーブルの 2022 年の週次売上合計を含むデータセット。
-
3 つの項目 year、week および sales に提供されたトランザクション日付。
この例では、最初の例から end_of_week 計算に相当するメジャーを作成するのに、チャート オブジェクトが使用されます。このメジャーは makeweekdate() 関数を使って、MM/DD/YYYY 形式でその週の金曜日の日付が返されます。
返された日付が金曜日であることを証明するため、曜日を返す 2 番目のメジャーが作成されます。
ロード スクリプト
SET DateFormat=’MM/DD/YYYY';
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
結果
次の手順を実行します。
-
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
transaction_year
-
transaction_week
-
-
最初の例の end_of_week 項目に相当する計算を実行するには、次のメジャーを作成します:
=makeweekdate(transaction_year,transaction_week,4)
-
各トランザクションの週の曜日を計算するには、次のメジャーを作成します:
=weekday(makeweekdate(transaction_year,transaction_week,4))
transaction_year | transaction_week | =makeweekdate(transaction_year,transaction_week,4) | =weekday(makeweekdate(transaction_year,transaction_week,4)) |
---|---|---|---|
2022 | 01 | 01/07/2022 | Fri |
2022 | 02 | 01/14/2022 | Fri |
2022 | 03 | 01/21/2022 | Fri |
2022 | 04 | 01/28/2022 | Fri |
2022 | 05 | 02/04/2022 | Fri |
2022 | 06 | 02/11/2022 | Fri |
2022 | 07 | 02/18/2022 | Fri |
end_of_week に相当する項目が、makeweekdate() 関数を使用することにより、メジャーとしてチャート オブジェクトに作成されます。transaction_year および transaction_week 項目は、年および週の引数として渡されます。値 4 は、日引数に使用されます。
次に関数はこれらの値を組み合わせて日付項目に変換し、DateFormat システム変数の形式で結果を返します。
makeweekdate() 関数とその引数もまた weekday() 関数で囲まれ、最初の例からの week_day 項目の計算に相当する計算を返します。上記のテーブルで分かるように、右側の最後の列はこれらの日付が金曜日に当たることを示しています。
例 4 – シナリオ
概要
この例では、2022 年のすべての金曜日を含む日付のリストを作成します。
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
結果
日付 | weekday |
---|---|
01/07/2022 | Fri |
01/14/2022 | Fri |
01/21/2022 | Fri |
01/28/2022 | Fri |
02/04/2022 | Fri |
02/11/2022 | Fri |
02/18/2022 | Fri |
02/25/2022 | Fri |
03/04/2022 | Fri |
03/11/2022 | Fri |
03/18/2022 | Fri |
03/25/2022 | Fri |
04/01/2022 | Fri |
04/08/2022 | Fri |
04/15/2022 | Fri |
04/22/2022 | Fri |
04/29/2022 | Fri |
05/06/2022 | Fri |
05/13/2022 | Fri |
05/20/2022 | Fri |
05/27/2022 | Fri |
06/03/2022 | Fri |
06/10/2022 | Fri |
06/17/2022 | Fri |
さらに 27 行以上 |
makeweekdate() 関数は、2022 年のすべての金曜日を見つけます。週パラメータ -2 を使うことにより、日付を見過ごすことはなくなります。最後に、先行 load が追加の weekday 項目を作成し、各 date の値が金曜日であることを明確に示します。