inweek - スクリプトおよびチャート関数
この関数は、timestamp が base_date を含む週にある場合、True を返します。
構文:
InWeek (timestamp, base_date, period_no[, first_week_day])
戻り値データ型: ブール値
Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。
inweek() 関数は、base_date 引数を使用して、日付が含まれる 7 日間を特定します。週の始めの曜日は、 FirstWeekDay システム変数に基づいています。ただし、 inweek() 関数で first_week_day 引数を使用して、週の最初の曜日を変更することもできます。
選択した週が定義されると、指定された日付値をその週セグメントと比較する際、関数はブール値の結果を返します。
使用に適しているケース
inweek() 関数はブール値の結果を返します。通常、このタイプの関数は if expression の条件として使用されます。inweek() 関数は、評価する日付が base_date 引数の選択した日付を含む週に入っているかによって集計または計算が返されます。
例えば、inweek() 関数を使用して、特定の週に製造されたすべての機器を識別することができます。
引数 | 説明 |
---|---|
timestamp | base_date と比較する日付。 |
base_date | 週の評価に使用する日付。 |
period_no | 週は period_no によって補正することができます。period_no は整数で、値 0 は base_date を含む週を示します。period_no の値が負の場合は過去の週を、正の場合は将来の週を示します。 |
first_week_day |
既定では、週の最初の曜日は日曜日 (FirstWeekDay システム変数で決定) で、土曜日と日曜日の間の午前 0 時に始まります。 first_week_day パラメータは FirstWeekDay 変数に取って代わります。別の曜日から始まる週を指定するには、0~6 でフラグを指定します。 |
毎日 | 値 |
---|---|
月曜日 | 0 |
火曜日 | 1 |
水曜日 | 2 |
木曜日 | 3 |
金曜日 | 4 |
土曜日 | 5 |
日曜日 | 6 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 | 結果 |
---|---|
inweek ('01/12/2006', '01/14/2006', 0) | TRUE を返します |
inweek ('01/12/2006', '01/20/2006', 0 ) | FALSE を返します |
inweek ('01/12/2006', '01/14/2006', -1 ) | FALSE を返します |
inweek ('01/07/2006', '01/14/2006', -1) | TRUE を返します |
inweek ('01/12/2006', '01/09/2006', 0, 3) | first_week_day が 3 (木曜日) に指定されており、これにより 01/12/2006 が、01/09/2006 を含む週の次の週の開始日となるため、FALSE を返します。 |
これらのトピックは、この関数を使用するのに役立つかもしれません。
トピック | 既定 フラグ / 値 | 説明 |
---|---|---|
FirstWeekDay | 6 / 日曜日 | 各週の開始日を定義します。 |
例 1 – 追加の引数なし
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Transactions」というテーブルにロードされる、2022 年 1 月の一連のトランザクションを含むデータセット。
-
6 (日曜日) に設定された FirstWeekDay システム変数。
-
次を含む、先行する LOAD:
-
2022 年 1 月 14 日の週に発生したトランザクションを決定する項目 [in_week] として設定された inweek() 関数。
-
2022 年 1 月 14 日の週にweek_day発生したトランザクションを決定する項目 [] として設定された weekday() 関数。
-
ロード スクリプト
SET FirstWeekDay=6;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
inweek(date,'01/14/2022', 0) as in_week
;
Load
*
Inline
[
id,date,amount
8188,'01/02/2022',37.23
8189,'01/05/2022',17.17
8190,'01/06/2022',88.27
8191,'01/08/2022',57.42
8192,'01/09/2022',53.80
8193,'01/10/2022',82.06
8194,'01/11/2022',40.39
8195,'01/12/2022',87.21
8196,'01/13/2022',95.93
8197,'01/14/2022',45.89
8198,'01/15/2022',36.23
8199,'01/16/2022',25.66
8200,'01/17/2022',82.77
8201,'01/18/2022',69.98
8202,'01/26/2022',76.11
8203,'01/27/2022',25.12
8204,'01/28/2022',46.23
8205,'01/29/2022',84.21
8206,'01/30/2022',96.24
8207,'01/31/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
week_day
-
in_week
日付 | week_day | in_week |
---|---|---|
01/02/2022 | 日 | 0 |
01/05/2022 | 水 | 0 |
01/06/2022 | Thu | 0 |
01/08/2022 | Sat | 0 |
01/09/2022 | 日 | -1 |
01/10/2022 | 月 | -1 |
01/11/2022 | 火 | -1 |
01/12/2022 | 水 | -1 |
01/13/2022 | Thu | -1 |
01/14/2022 | Fri | -1 |
01/15/2022 | Sat | -1 |
01/16/2022 | 日 | 0 |
01/17/2022 | 月 | 0 |
01/18/2022 | 火 | 0 |
01/26/2022 | 水 | 0 |
01/27/2022 | Thu | 0 |
01/28/2022 | Fri | 0 |
01/29/2022 | Sat | 0 |
01/30/2022 | 日 | 0 |
01/31/2022 | 月 | 0 |
[in_week] 項目は、inweek() 関数を使用して、前の Load ステートメントで作成されます。最初の引数は、評価される項目を識別します。第 2 引数はハードコード化された日付 1 月 14 日で、これは base_date です。base_date 引数は FirstWeekDay システム変数と連携して、比較対象の週を特定します。0 の period_no (関数がセグメント化された週の前後の週を比較していないことを意味する) は、最後の引数です。
システム変数は、週が日曜日に始まり、土曜日に終わることを決定します。FirstWeekDay したがって、1 月は下図のように週に分割され、1 月 9 日~14 日の日付が inweek() 計算の有効期間となります。
1 月 9 日~14 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 2 – period_no
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2022 年の一連のトランザクションを含む同じデータセットが、「Transactions」というテーブルにロードされます。
-
6 (日曜日) に設定された FirstWeekDay システム変数。
-
次を含む、先行する LOAD:
-
2022 年 1 月 14 日の週の 1 週間前に発生したトランザクションを決定する項目 [prev_week] として設定された inweek () 関数。
-
2022 年 1 月 14 日の週にweek_day発生したトランザクションを決定する項目 [] として設定された weekday() 関数。
-
ロード スクリプト
SET FirstWeekDay=6;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
inweek(date,'01/14/2022', -1) as prev_week
;
Load
*
Inline
[
id,date,amount
8188,'01/02/2022',37.23
8189,'01/05/2022',17.17
8190,'01/06/2022',88.27
8191,'01/08/2022',57.42
8192,'01/09/2022',53.80
8193,'01/10/2022',82.06
8194,'01/11/2022',40.39
8195,'01/12/2022',87.21
8196,'01/13/2022',95.93
8197,'01/14/2022',45.89
8198,'01/15/2022',36.23
8199,'01/16/2022',25.66
8200,'01/17/2022',82.77
8201,'01/18/2022',69.98
8202,'01/26/2022',76.11
8203,'01/27/2022',25.12
8204,'01/28/2022',46.23
8205,'01/29/2022',84.21
8206,'01/30/2022',96.24
8207,'01/31/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
week_day
-
prev_week
日付 | week_day | prev_week |
---|---|---|
01/02/2022 | 日 | -1 |
01/05/2022 | 水 | -1 |
01/06/2022 | Thu | -1 |
01/08/2022 | Sat | -1 |
01/09/2022 | 日 | 0 |
01/10/2022 | 月 | 0 |
01/11/2022 | 火 | 0 |
01/12/2022 | 水 | 0 |
01/13/2022 | Thu | 0 |
01/14/2022 | Fri | 0 |
01/15/2022 | Sat | 0 |
01/16/2022 | 日 | 0 |
01/17/2022 | 月 | 0 |
01/18/2022 | 火 | 0 |
01/26/2022 | 水 | 0 |
01/27/2022 | Thu | 0 |
01/28/2022 | Fri | 0 |
01/29/2022 | Sat | 0 |
01/30/2022 | 日 | 0 |
01/31/2022 | 月 | 0 |
inweek() 関数で -1 を period_no 引数として使用することにより、比較対象の週の境界を 7 日間ずらします。0 の period_no では、週は 1 月 9~15 日となります。この例では、-1 の period_no はこのセグメントの開始と終了境界を 1 週間戻します。日付境界が 1 月 2 日から 1 月 8 日になります。
したがって、1 月 2 日~1 月 8 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 3 – first_week_day
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2022 年の一連のトランザクションを含む同じデータセットが、「Transactions」というテーブルにロードされます。
-
6 (日曜日) に設定された FirstWeekDay システム変数。
-
次を含む、先行する LOAD:
-
2022 年 1 月 14 日の週にin_week発生したトランザクションを決定する項目 [] として設定された inweek() 関数。
-
2022 年 1 月 14 日の週にweek_day発生したトランザクションを決定する項目 [] として設定された weekday() 関数。
-
ロード スクリプト
SET FirstWeekDay=6;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
inweek(date,'01/14/2022', 0, 0) as in_week
;
Load
*
Inline
[
id,date,amount
8188,'01/02/2022',37.23
8189,'01/05/2022',17.17
8190,'01/06/2022',88.27
8191,'01/08/2022',57.42
8192,'01/09/2022',53.80
8193,'01/10/2022',82.06
8194,'01/11/2022',40.39
8195,'01/12/2022',87.21
8196,'01/13/2022',95.93
8197,'01/14/2022',45.89
8198,'01/15/2022',36.23
8199,'01/16/2022',25.66
8200,'01/17/2022',82.77
8201,'01/18/2022',69.98
8202,'01/26/2022',76.11
8203,'01/27/2022',25.12
8204,'01/28/2022',46.23
8205,'01/29/2022',84.21
8206,'01/30/2022',96.24
8207,'01/31/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
week_day
-
in_week
日付 | week_day | in_week |
---|---|---|
01/02/2022 | 日 | 0 |
01/05/2022 | 水 | 0 |
01/06/2022 | Thu | 0 |
01/08/2022 | Sat | 0 |
01/09/2022 | 日 | 0 |
01/10/2022 | 月 | -1 |
01/11/2022 | 火 | -1 |
01/12/2022 | 水 | -1 |
01/13/2022 | Thu | -1 |
01/14/2022 | Fri | -1 |
01/15/2022 | Sat | -1 |
01/16/2022 | 日 | -1 |
01/17/2022 | 月 | 0 |
01/18/2022 | 火 | 0 |
01/26/2022 | 水 | 0 |
01/27/2022 | Thu | 0 |
01/28/2022 | Fri | 0 |
01/29/2022 | Sat | 0 |
01/30/2022 | 日 | 0 |
01/31/2022 | 月 | 0 |
inweek() 関数の first_week_day 引数として 0 を使用することにより、関数引数が FirstWeekDay システム変数に取って代わり、月曜日を週の初日に設定します。
したがって、1 月 10 日と 16 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 4 – チャート オブジェクトの例
概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例ではデータセットは変更されず、アプリケーションにロードされます。結果テーブルにメジャーを作成して、2022 年 1 月 14 日の週に発生したトランザクションを判断します。
ロード スクリプト
SET FirstWeekDay=6;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/02/2022',37.23
8189,'01/05/2022',17.17
8190,'01/06/2022',88.27
8191,'01/08/2022',57.42
8192,'01/09/2022',53.80
8193,'01/10/2022',82.06
8194,'01/11/2022',40.39
8195,'01/12/2022',87.21
8196,'01/13/2022',95.93
8197,'01/14/2022',45.89
8198,'01/15/2022',36.23
8199,'01/16/2022',25.66
8200,'01/17/2022',82.77
8201,'01/18/2022',69.98
8202,'01/26/2022',76.11
8203,'01/27/2022',25.12
8204,'01/28/2022',46.23
8205,'01/29/2022',84.21
8206,'01/30/2022',96.24
8207,'01/31/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
-
date
次のメジャーを作成します:
-
=inweek (date,'01/14/2022',0)、トランザクションが 1 月 14 日と同じ週に発生したかどうかを計算します。
-
=weekday(date)、各日付に対応する曜日を示します。
日付 | week_day | =inweek (date,'01/14/2022',0) |
---|---|---|
01/02/2022 | 日 | 0 |
01/05/2022 | 水 | 0 |
01/06/2022 | Thu | 0 |
01/08/2022 | Sat | 0 |
01/09/2022 | 日 | -1 |
01/10/2022 | 月 | -1 |
01/11/2022 | 火 | -1 |
01/12/2022 | 水 | -1 |
01/13/2022 | Thu | -1 |
01/14/2022 | Fri | -1 |
01/15/2022 | Sat | -1 |
01/16/2022 | 日 | 0 |
01/17/2022 | 月 | 0 |
01/18/2022 | 火 | 0 |
01/26/2022 | 水 | 0 |
01/27/2022 | Thu | 0 |
01/28/2022 | Fri | 0 |
01/29/2022 | Sat | 0 |
01/30/2022 | 日 | 0 |
01/31/2022 | 月 | 0 |
in_week メジャーは、 inweek() 関数を使用してチャートに作成されます。最初の引数は、評価される項目を識別します。第 2 引数はハードコード化された日付 1 月 14 日で、これは base_date です。base_date 引数は FirstWeekDay システム変数と連携して、比較対象の週を特定します。0 の period_no が最終引数です。
システム変数は、週が日曜日に始まり、土曜日に終わることを決定します。FirstWeekDay したがって、1 月は下図のように週に分割され、1 月 9 日~14 日の日付が inweek() 計算の有効期間となります。
1 月 9 日~14 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Products」というテーブルにロードされるデータセット。
-
テーブルには次の項目が含まれています。
-
製品 ID
-
製品の種類
-
製造日付
-
コスト
-
機器のエラーにより、1 月 12 日の週に製造された製品に欠陥があることが確認されています。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、その週に製造された製品のコストを週別に表示するチャートを希望しています。
ロード スクリプト
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'01/02/2022',37.23
8189,'01/05/2022',17.17
8190,'01/06/2022',88.27
8191,'01/08/2022',57.42
8192,'01/09/2022',53.80
8193,'01/10/2022',82.06
8194,'01/11/2022',40.39
8195,'01/12/2022',87.21
8196,'01/13/2022',95.93
8197,'01/14/2022',45.89
8198,'01/15/2022',36.23
8199,'01/16/2022',25.66
8200,'01/17/2022',82.77
8201,'01/18/2022',69.98
8202,'01/26/2022',76.11
8203,'01/27/2022',25.12
8204,'01/28/2022',46.23
8205,'01/29/2022',84.21
8206,'01/30/2022',96.24
8207,'01/31/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
-
=weekname(manufacture_date)
次のメジャーを作成します:
-
inweek() 関数を使って、不具合のある製品とない製品を特定する =if(only(inweek(manufacture_date,makedate(2022,01,12),0)),'Defective','Faultless')。
-
各製品の合計コストを示す =sum(cost_price)。
次の手順を実行します。
-
メジャーの [数値書式] を [通貨] に設定します。
-
[スタイル] で [合計] をオフにします。
weekname(manufacture_date) | =if(only(inweek(manufacture_date,makedate(2022,01,12),0)), 'Defective','Faultless') | Sum(cost_price) |
---|---|---|
2022/02 | 不具合なし | 200.09 |
2022/03 | 不具合 | 441.51 |
2022/04 | 不具合なし | 178.41 |
2022/05 | 不具合なし | 231.67 |
2022/06 | 不具合なし | 163.91 |
inweek() 関数は、各製品の製造日を評価するときにブール値を返します。1 月 12 日の週に製造された製品の場合、inweek() 関数はブール値 TRUE を返し、製品を「不具合」としてマークします。 の値を返し、その週に製造されなかった製品については、その製品に「不具合なし」のマークが付けられます。