inquartertodate - スクリプトおよびチャート関数
この関数は、timestamp が base_date のミリ秒単位まで正確に base_date を含む四半期の範囲内にある場合、True を返します。
構文:
InQuarterToDate (timestamp, base_date, period_no [, first_month_of_year])
戻り値データ型: ブール値
Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。
inquartertodate() 関数は、1 年を 1 月 1 日~12 月 31 日 (またはユーザーが定義する年の開始日とそれに対応する終了日) の間の 4 つの等しい四半期に分割します。 base_date を使用して、関数は特定の四半期を分割し、base_date はその四半期セグメントの四半期と最大許容日付の両方を識別します。最後に、指定された日付値をそのセグメントと比較すると、関数はブール値の結果を返します。
引数 | 説明 |
---|---|
timestamp | base_date と比較する日付。 |
base_date | 四半期の評価に使用する日付。 |
period_no |
四半期は period_no によって補正することができます。period_no は整数で、値 0 は base_date を含む四半期を示します。period_no の値が負の場合は過去の四半期を、正の場合は将来の四半期を示します。 |
first_month_of_year | 事業年度が 1 月以外の月に始まる場合は、first_month_of_year で 2 から 12 の間の値を指定します。 |
使用に適しているケース
inquartertodate() 関数はブール値の結果を返します。通常、このタイプの関数は if 式の条件として使用されます。inquartertodate() 関数は、評価された日付が問題の日付を含む四半期に発生したかどうかに応じて、集計または計算を返します。
例えば、inquartertodate() 関数を使用して、特定の日付を含む四半期に製造されたすべての機器を識別することができます。
例 | 結果 |
---|---|
inquartertodate('01/25/2013', '03/25/2013', 0) | timestamp の値 01/25/2013 が、base_date の値 03/25/2013 が入っている 01/01/2013~ 03/25/2013 の 3 か月に当たるため、TRUE を返します。 |
inquartertodate('04/26/2013', '03/25/2013', 0) | 04/26/2013 は、前の例の期間の範囲外であるため、FALSE を返します。 |
inquartertodate('02/25/2013', '06/09/2013', -1) | period_noの値 -1 が検索期間を 1 期間 (3 か月 = 1 年の 1 四半期) 戻るため、TRUE を返します。これにより、検索期間は 01/01/2013~03/09/2013 となります。 |
inquartertodate('03/25/2006', '04/15/2006', 0, 2) | first_month_of_year の値が 2 に設定され、検索期間が 04/01/2006 ~ 04/15/2006 ではなく 02/01/2006~04/15/2006 になるため、TRUE が返されます。 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 1 – 追加の引数なし
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
-
DateFormat システム変数形式 (MM/DD/YYYY) で提供されている日付項目。
-
2022 年 5 月 15 日までの四半期に発生したトランザクションを決定する項目 [ in_quarter_to_date] の作成。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', 0) as in_quarter_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
in_quarter_to_date
日付 | in_quarter_to_date |
---|---|
1/7/2022 | 0 |
1/19/2022 | 0 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | -1 |
5/7/2022 | -1 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | 0 |
7/22/2022 | 0 |
7/23/2022 | 0 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
[in_quarter_to_date] 項目は、inquartertodate() 関数を使用して、前の Load ステートメントで作成されます。提供される最初の引数は、評価される項目を識別します。2 番目の引数は、5 月 15 日のハードコードされた日付です。これは base_date で、セグメント化する四半期を識別し、そのセグメントの終了境界を定義します。 period_no の 0 は最後の引数です。つまり、関数がセグメント化された四半期の前後の四半期を比較していないということです。
4 月 1 日~ 5 月 15 日に発生したトランザクションは、TRUE のブール値の結果を返します。5 月 16 日以降の取引日は FALSE を返し、4 月 1 日より前の取引も同様です。
例 2 – period_no
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
最初の例と同じデータセットとシナリオ。
-
2022 年 5 月 15 日に終了する四半期セグメント前の四半期全体で発生したトランザクションを決定する項目 [previous_qtr_to_date] の作成。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', -1) as previous_qtr_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
previous_qtr_to_date
日付 | previous_qtr_to_date |
---|---|
1/7/2022 | -1 |
1/19/2022 | -1 |
2/5/2022 | -1 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | 0 |
5/7/2022 | 0 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | 0 |
7/22/2022 | 0 |
7/23/2022 | 0 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
period_no 値 -1 は、inquartertodate () 関数が入力四半期セグメントを前の四半期と比較することを示します。5 月 15 日はその年の第 2 四半期に分類されるため、セグメントは最初は 4 月 1 日~5 月 15 日に相当します。 period_no は、このセグメントを 3 か月前にオフセットし、日付の境界を 1 月 1 日~2 月 15 日にします。
したがって、1 月 1 日~2 月 15 日に発生したトランザクションは、TRUEのブール値の結果を返します。
例 3 – first_month_of_year
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
最初の例と同じデータセットとシナリオ。
-
2022 年 5 月 15 日まで同四半期に発生したトランザクションを決定する項目 [in_quarter_to_date] の作成。
この例では、3 月を会計年度の最初の月として設定します。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', 0,3) as in_quarter_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
date
-
in_quarter_to_date
日付 | in_quarter_to_date |
---|---|
1/7/2022 | 0 |
1/19/2022 | 0 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | -1 |
4/1/2022 | -1 |
5/7/2022 | -1 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | 0 |
7/22/2022 | 0 |
7/23/2022 | 0 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
inquartertodate() 関数の first_month_of_year 引数に 3 を使用することにより、関数は 3 月 1 日に年度を開始し、その後その年度を四半期に分割します。したがって、四半期セグメントは次のとおりです。
-
3 月~5 月
-
6 月~8 月
-
9 月~11 月
-
12 月~2 月
次に、5 月 15 日の base_date は、5 月 15 日に終了境界を設定することにより、3 月~5 月の四半期をセグメント化します。
したがって、3 月 1 日~5 月 15 日に発生したトランザクションは TRUE のブール値の結果を返しますが、これらの境界外の日付のトランザクションは FALSE の値を返します。
例 4 – チャート オブジェクトの例
概要
データ ロード エディタを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。5 月 15 日と同じ四半期に発生したトランザクションを決定する計算は、チャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:date。
次のメジャーを作成します:
=inquartertodate(date,'05/15/2022', 0)
日付 | =inquartertodate(date,'05/15/2022', 0) |
---|---|
1/7/2022 | 0 |
1/19/2022 | 0 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | -1 |
5/7/2022 | -1 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | 0 |
7/22/2022 | 0 |
7/23/2022 | 0 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
in_quarter_to_date メジャーは、 inquartertodate() 関数を使用してチャート オブジェクトに作成されます。最初の引数は、評価対象の日付項目です。2 番目の引数は、5 月 15 日のハードコードされた日付です。これは base_date で、セグメント化する四半期を識別し、そのセグメントの終了境界を定義します。 period_no の 0 は最後の引数です。これは、関数がセグメント化された四半期の前後の四半期を比較していないことを意味します。
4 月 1 日~5 月 15 日に発生したトランザクションは、TRUE のブール値の結果を返します。5 月 16 日以降のトランザクションは FALSE を返し、4 月 1 日より前のトランザクションも同様です。
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Products」というテーブルにロードされるデータセット。
-
製品 ID、製造年月日、原価に関する情報。
2022 年 5 月 15 日、製造工程で 1 件の設備エラーが特定され、解決されました。この日付までにその四半期に製造された製品は不良品になります。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、およびその四半期までに製造された製品のコストを日付別に表示するチャート オブジェクトを希望しています。
ロード スクリプト
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
結果
次の手順を実行します。
-
データをロードしてシートを開きます。新しいテーブルを作成します。四半期名を表示する軸を作成します。
=quartername(manufacture_date)
-
次に、不具合のある製品とない製品を特定する軸を作成します。
=if(inquartertodate(manufacture_date,makedate(2022,05,15),0),'Defective','Faultless')
-
製品の cost_price を合計するメジャーを作成します。
=sum(cost_price)
-
メジャーの [数値書式] を [通貨] に設定します。
quartername(manufacture_date) | if(inquartertodate(manufacture_date,makedate(2022,05,15),0),'Defective','Faultless') | Sum(cost_price) |
---|---|---|
2022 年 1 月~3 月 | 不具合なし | $253.89 |
2022 年 4 月~6 月 | 不具合なし | $229.03 |
2022 年 4 月~6 月 | 不具合 | $122.45 |
2022 年 7 月~9 月 | 不具合なし | $446.31 |
2022 年 10 月~12 月 | 不具合なし | $163.91 |
inquartertodate() 関数は、各製品の製造日を評価するときにブール値を返します。TRUE のブール値を返すものについては、製品を ‘Defective’とマークします。FALSE の値を返し、5 月 15 日を含む四半期に製造されていない製品については、製品を ‘Faultless’ とマークします。