weekday - スクリプトおよびチャート関数このページ上
この関数は、以下を持つデュアル値を返します。
環境変数 DayNames で定義される日の名前。
曜日に相当する 0 から 6 までの整数。
構文:
weekday( date [,first_week_day =0])
戻り値データ型: dual
weekday() 関数は、日付がどの曜日に当たるかを決定します。次に、その日を示す文字列値を返します。
日付が当たる曜日の名前を返す weekday() 関数の図
結果は、週の開始日に基づいて、曜日 (0-6) に対応する数値を返します。例えば、週の初日が日曜日に設定されている場合、水曜日は 3 という数値を返します。この開始日は、FirstWeekDay システム変数、または first_week_day 関数パラメータによって決定されます。
この数値は演算式の一部として使用できます。例えば、1 で乗算して値自体を返すことができます。
日の名前でなく数値が表示されている weekday() 関数の図
使用に適しているケース
weekday() 関数は、集計を曜日別に比較する場合に便利です。例えば、曜日別に製品の平均売上を比較するような場合です。
これらの軸は、関数を使用してマスター カレンダー テーブルに項目を作成することにより、ロード スクリプトで作成することも、計算メジャーとしてチャートで直接作成することもできます。
引数
date
評価する日付またはタイムスタンプ。
first_week_day
週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。
FirstWeekDay
次の値を使用して、first_week_day 引数で週が始まる日を設定できます。
first_week_day values
毎日
値
月曜日
0
火曜日
1
水曜日
2
木曜日
3
金曜日
4
土曜日
5
日曜日
6
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
情報メモ 特に述べられていない限り、以下の例において FirstWeekDay は 0 に設定されます。
関数の例
例
結果
weekday('10/12/1971')
'Tue' と 1 を返します。
weekday('10/12/1971' , 6)
'Tue' と 2 を返します。
この例では、日曜日 (6 ) が週の初日です。
SET FirstWeekDay=6;
...
weekday('10/12/1971')
'Tue' と 2 を返します。
例 1 - Weekday 文字列
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
(日曜日) に設定された FirstWeekDay システム変数。
既定の曜日名を使うよう設定された DayNames 変数。
weekday() 関数を含む前のロードで、[week_day ] 項目として設定されており、トランザクションが発生した曜日を返します。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day
;
Load
*
Inline
[
id,date,amount
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.39
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
ID
日付
week_day
8188
01/01/2022
Sat
8189
01/02/2022
日
8190
01/03/2022
月
8191
01/04/2022
火
8192
01/05/2022
水
8193
01/06/2022
Thu
8194
01/07/2022
Fri
[week_day ] 項目は、weekday() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
weekday() 関数は曜日文字列値を返します。つまり、DayNames システム変数によって設定された曜日の名前を返します。
トランザクション 8192 の曜日として水曜日を返す weekday() 関数。
トランザクション 8192 は 1 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekday() 関数トランザクションは水曜日に発生し、この値を DayNames システム変数の略式で [week_day ] 項目に返します。
[week_day ] 項目の値は列で右揃えされていますが、これは項目 (水曜日、3) にデュアル値とテキスト結果があるためです。項目値を同等の数値に変換するため、項目を num() 関数の内部にラップすることができます。例えば、トランザクション 8192、水曜日の値は数値 3 に変換されます。
例 2 – first_week_day
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
(日曜日) に設定された FirstWeekDay システム変数。
既定の曜日名を使うよう設定された DayNames 変数。
weekday() 関数を含む前のロードで、[week_day ] 項目として設定されており、トランザクションが発生した曜日を返します。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date,1) as week_day
;
Load
*
Inline
[
id,date,amount
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.39
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
ID
日付
week_day
8188
01/01/2022
Sat
8189
01/02/2022
日
8190
01/03/2022
月
8191
01/04/2022
火
8192
01/05/2022
水
8193
01/06/2022
Thu
8194
01/07/2022
Fri
水曜日にデュアル値の 1 があることを示す weekday() 関数の図
first_week_day 引数が weekday() 関数で 1 に設定されているため、週の初日は火曜日です。そのため、火曜日に発生するすべてのトランザクションにはデュアル値 0 があります。
トランザクション 8192 は 1 月 5 日に発生します。weekday() 関数はこれが水曜日であることを特定するため、式はデュアル値 1 を返します。
例 3 – チャート オブジェクトの例
ロード スクリプトとチャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
6 (日曜日) に設定された FirstWeekDay システム変数。
既定の曜日名を使うよう設定された DayNames 変数。
ただし、この例では、データセットは変更されず、アプリケーションにロードされます。曜日の値を特定する計算は、アプリのチャートのメジャーとして作成されます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*
Inline
[
id,date,amount
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.39
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
曜日の値を計算するには、次のメジャーを作成します。
結果テーブル
ID
日付
=weekday(date)
8188
01/01/2022
Sat
8189
01/02/2022
日
8190
01/03/2022
月
8191
01/04/2022
火
8192
01/05/2022
水
8193
01/06/2022
Thu
8194
01/07/2022
Fri
[=weekday(date) ] 項目は、weekday() 関数を使用し、関数の引数として日付項目を渡すことにより、チャートで作成されます。
weekday() 関数は曜日文字列値を返します。つまり、DayNames システム変数によって設定された曜日の名前を返します。
トランザクション 8192 の曜日として水曜日を返す weekday() 関数。
トランザクション 8192 は 1 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekday() 関数トランザクションは水曜日に発生し、この値を DayNames システム変数の略式で [=weekday(date) ] 項目に返します。
例 4 – シナリオ
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
6 (日曜日) に設定された FirstWeekDay システム変数。
既定の曜日名を使うよう設定された DayNames 変数。
エンド ユーザーは、トランザクションの曜日ごとの平均売上高を示すチャートを求めています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
LOAD
RecNo() AS id,
MakeDate(2022, 1, Ceil(Rand() * 31)) as date,
Rand() * 1000 AS amount
Autogenerate(1000);
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
=weekday(date)
=avg(amount)
メジャーの [数値書式 ] を [通貨 ] に設定します。
結果テーブル
=weekday(date)
Avg(amount)
日
$536.96
月
$500.80
火
$515.63
水
$509.21
Thu
$482.70
Fri
$441.33
Sat
$505.22