inlunarweektodate - スクリプトおよびチャート関数このページ上
この関数は、timestamp が base_date の最後のミリ秒までの週周期の範囲内か確認します。Qlik Sense の旧暦の週は、1 月 1 日を週の初日として数えるよう定義され、1 年の最終週を除いて正確に 7 日構成となります。
構文:
InLunarWeekToDate
( timestamp, base_date, period_no [, first_week_day] )
戻り値データ型: ブール値
情報メモ
Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。
inlunarweektodate() 関数の図の例
inlunarweektodate() 関数は、旧暦の週の終了点として機能します。一方、inlunarweek() 関数は、base_date がどの旧暦の週に当たるかを決定します。例えば、base_date が 1 月 5 日で、1 月 1 日~1 月 5 日のタイムスタンプはブール値の結果 TRUE を返しますが、1 月 6 日と 7 日以降はブール値 FALSE を返します。
引数
timestamp
base_date と比較する日付。
base_date
週周期の評価に使用する日付。
period_no
週周期は period_no によって補正することができます。period_no は整数で、値 0 は base_date を含む週周期を示します。period_no の値が負の場合は過去の週周期を、正の場合は将来の週周期を示します。
first_week_day
0 未満または 0 よりも大きい補正値。日数または 1 日未満の長さ、またはその両方を指定して、年の開始時点を変更できます。
使用に適しているケース
inlunarweektodate() 関数はブール値の結果を返します。通常、このタイプの関数は IF 式の条件として使用されます。inlunarweektodate() 関数は、評価された日付が対象の週の特定のセグメントに発生したかどうかに応じて、集計または計算を返すようにユーザーが希望する場合に使用されます。
例えば、inlunarweektodate() 関数を使用して、特定の日付までの週に製造されたすべての機器を識別することができます。
関数の例
inlunarweektodate('01/12/2013', '01/13/2013',
0)
timestamp の値 01/12/2013 が 01/08/2013 ~ 01/13/2013 の週の一部に当たるため、TRUE を返します。
inlunarweektodate('01/12/2013', '01/11/2013',
0)
2 つの日付が 01/12/2012 の同じ旧暦の週にありますが、timestamp の値が base_date の値より後であるため、FALSE を返します。
inlunarweektodate('01/12/2006', '01/05/2006',
1)
TRUE を返します。period_no に 1 を指定すると base_date を 1 週間先にシフトするので、timestamp の値がその週周期の範囲内になります。
inlunarweektodate() 関数は、多くの場合、次の関数と組み合わせて使用されます。
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 1 – 追加の引数なし
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inlunarweektodate(date,'01/10/2022', 0) as in_lunar_week_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
date
in_lunar_week_to_date
結果テーブル
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
inlunarweektodate() 関数、追加引数なし
in_lunar_week_to_date 項目は、inlunarweektodate() 関数を使用し、base_date と 0 を関数の引数として 1 月 10 日のハードコード化された日付 date を渡すことにより、先行 Load ステートメントで作成されます。
旧暦の週は 1 月 1 日から始まるため、1 月 10 日は 1 月 8 日に始まる旧暦の週に当たり、inlunarweektodate() 関数を使用しているため、その旧暦の週は 1 月 10 日に終わります。そのため、それら 2 つの日付の間に発生するトランザクションはブール値 TRUE を返します。これは、結果テーブルで検証されます。
例 2 – period_no
ロード スクリプトと結果
概要
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例のタスクは、トランザクションが 1 月 10 日より旧暦 2 週間後に発生するかどうかを決定する項目 2_lunar_weeks_later を作成することです。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inlunarweektodate(date,'01/10/2022', 2) as [2_lunar_weeks_later]
;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
1/1/2022
0
1/4/2022
0
1/10/2022
0
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
-1
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
inlunarweektodate() 関数、period_no example
この例では、inlunarweektodate() 関数が 1 月 10 日までの旧暦の週が 3 日 (1 月 8、9、10 日) と等しいかどうかを決定します。period_no 2 がオフセット引数として使用されるため、この旧暦の週は 14 日間ずれます。そのため、これは 1 月 22、23、および 24 日を含む 3 日の旧暦の週を定義します。1 月 22 日~1 月 24 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 3 – first_week_day
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inlunarweek(date,'01/10/2022', 0,3) as in_lunar_week_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
date
in_lunar_week_to_date
結果テーブル
1/1/2022
0
1/4/2022
-1
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
inlunarweektodate() 関数、first_week_day 例
この例では、the first_week_date 引数 3 が inlunarweek() 関数で使用されているため、最初の旧暦の週は 1 月 3 日~1 月 10 日となります。1 月 10 日も base_date に当たるため、これら 2 つの日付の間に発生するトランザクションは、ブール値 TRUE を返します。
例 4 – チャート オブジェクトの例
ロード スクリプトとチャートの数式
概要
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。
ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクションが 1 月 10 日までの旧暦の週に発生したかどうかを判断する計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:date 。
次のメジャーを作成します:
=inlunarweektodate(date,'01/10/2022', 0)
結果テーブル
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
inlunarweektodate() 関数、チャート オブジェクトの例
in_lunar_week_to_date メジャーは、inlunarweektodate() 関数を使用し、日付項目、1 月 10 日のハードコードされた日付を base_date として、0 のオフセットを関数の引数として渡すことにより、チャート オブジェクトで作成されます。
旧暦の週は 1 月 1 日から始まるため、1 月 10 日は 1 月 8 日に始まる旧暦の週に当たります。さらに、inlunarweektodate() 関数を使用しているため、その旧暦の週は 1 月 10 日に終わります。そのため、それら 2 つの日付の間に発生するトランザクションはブール値 TRUE を返します。これは、結果テーブルで検証されます。
例 5 – シナリオ
ロード スクリプトとチャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
機器のエラーにより、1 月 12 日の旧暦の週に製造された製品に欠陥があることが確認されています。この問題は 1 月 13 日に解決されました。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、およびその週に製造された製品のコストを週別に表示するチャート オブジェクトを希望しています。
ロード スクリプト
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'01/02/2022 12:22:06',37.23
8189,'01/05/2022 01:02:30',17.17
8190,'01/06/2022 15:36:20',88.27
8191,'01/08/2022 10:58:35',57.42
8192,'01/09/2022 08:53:32',53.80
8193,'01/10/2022 21:13:01',82.06
8194,'01/11/2022 00:57:13',40.39
8195,'01/12/2022 09:26:02',87.21
8196,'01/13/2022 15:05:09',95.93
8197,'01/14/2022 18:44:57',45.89
8198,'01/15/2022 06:10:46',36.23
8199,'01/16/2022 06:39:27',25.66
8200,'01/17/2022 10:44:16',82.77
8201,'01/18/2022 18:48:17',69.98
8202,'01/26/2022 04:36:03',76.11
8203,'01/27/2022 08:07:49',25.12
8204,'01/28/2022 12:24:29',46.23
8205,'01/30/2022 11:56:56',84.21
8206,'01/30/2022 14:40:19',96.24
8207,'01/31/2022 05:28:21',67.67
];
結果
次の手順を実行します。
データをロードしてシートを開きます。新しいテーブルを作成します。
週名を表示する軸を作成します。
=weekname(manufacture_date)
次に、不具合のある製品とない製品を特定する、inlunarweektodate() 関数を使った軸を作成します。
=if(inlunarweektodate(manufacture_date,makedate(2022,01,12),0),'Defective','Faultless')
製品の cost_price を合計するメジャーを作成します。
=sum(cost_price)
メジャーの [数値書式 ] を [通貨 ] に設定します。
結果テーブル
2022/01
不具合なし
$142.67
2022/02
不具合
$320.88
2022/02
不具合なし
$141.82
2022/03
不具合なし
$214.64
2022/04
不具合なし
$147.46
2022/05
不具合なし
$248.12
inlunarweektodate() 関数は、各製品の製造日を評価するときにブール値を返します。TRUE のブール値を返すものについては、製品を ‘Defective’ とマークします。FALSE の値を返し、1 月 12 日までの旧暦の週に製造されていない製品については、製品を ‘Faultless’ とマークします。