inquarter - スクリプトおよびチャート関数このページ上
この関数は、timestamp が base_date を含む四半期に含まれる場合、True を返します。
構文:
InQuarter
( timestamp, base_date, period_no[, first_month_of_year] )
戻り値データ型: ブール値
Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。
inquarter() 関数範囲の図
言い換えると、inquarter() 関数は 1 月 1 日~12 月 31 日の年を 4 つの四半期に等分します。first_month_of_year 引数を使ってアプリの開始時としてどの月を設定するかを変更することができ、その引数に基づいて四半期が変化します。base_date 、関数は関数の比較対象としてどの四半期を使用すべきかを特定します。最後に、日付値をその四半期セグメントと比較すると、関数はブール値の結果を返します。
使用に適しているケース
inquarter() 関数はブール値の結果を返します。通常、このタイプの関数は if expression の条件として使用されます。これは、選択した四半期でその日付が発生したかどうかに応じて、集計または計算を返します。
例えば、inquarter() 関数は、機器が製造された日付に基づいて、その四半期セグメントに製造されたすべての機器を特定するために使用できます。
引数
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 の間の値を指定します。
次の値を使用して、first_month_of_year 引数に年の最初の月を設定できます。
first_month_of_year values
月
値
February
2
3 月
3
April
4
May
5
June
6
7 月
7
8 月
8
September
9
10 月
10
November
11
12 月
12
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
関数の例
例
結果
inquarter ('01/25/2013', '01/01/2013', 0)
TRUE を返します
inquarter ('01/25/2013', '04/01/2013', 0)
FALSE を返します
inquarter ('01/25/2013', '01/01/2013', -1)
FALSE を返します
inquarter ('12/25/2012', '01/01/2013', -1)
TRUE を返します
inquarter ('01/25/2013', '03/01/2013', 0, 3)
FALSE を返します
inquarter ('03/25/2013', '03/01/2013', 0, 3)
TRUE を返します
例 1 – 追加の引数なし
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', 0) as in_quarter
;
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付
in_quarter
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
-1
6/15/2022
-1
6/26/2022
-1
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 ] 項目は、inquarter() 関数を使用して、前の Load ステートメントで作成されます。最初の引数は、評価される項目を識別します。第 2 引数は 5 月 15 日のハードコード化された日付であり、比較対象として定義sるう四半期を特定します。0 の period_no は最後の引数であり、inquarter() 関数がセグメント化された四半期の前後の四半期を比較していないことを意味します。
基準日が 5 月 15 日の inquarter() 関数の図
4 月 1 日~6 月 30 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 2 – period_no
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', -1) as previous_qtr
;
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付
previous_qtr
1/7/2022
-1
1/19/2022
-1
2/5/2022
-1
2/28/2022
-1
3/16/2022
-1
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
inquarter() 関数で -1 を period_no 引数として使用することにより、比較対象四半期の境界を 1 四半期ずらします。5 月 15 日はその年の第 2 四半期に分類されるため、セグメントは最初は 4 月 1 日~6 月 30 日に相当します。 period_no は、このセグメントを 3 か月前にオフセットし、日付の境界を 1 月 1 日~3 月 30 日にします。
基準日が 5 月 15 日の inquarter() 関数の図
したがって、1 月 1 日~3 月 30 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 3 – first_month_of_year
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただしこの例では、組織ポリシーでは 3 月が会計期間の開始月に定められています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', 0, 3) as in_quarter
;
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付
previous_qtr
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
-1
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
inquarter() 関数の first_month_of_year 引数に 3 を使用することにより、関数は 3 月 1 日に年度を開始し、その後その年度を四半期に分割します。四半期別セグメントはしたがって、3~5月、6~8月、9~11月、12~2月になります。5 月 15 日の base_date は 3~5月四半期を関数の比較対象四半期として設定しています。
3 月が年の最初の月に設定された inquarter() 関数の図
したがって、3 月 1 日~5 月 31 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 4 – チャート オブジェクトの例
ロード スクリプトとチャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
5 月 15 日までの同じ四半期にトランザクションが発生したかどうかを計算するには、次のメジャーを作成します。
=inquarter(date,'05/15/2022', 0)
結果テーブル
日付
in_quarter
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
-1
6/15/2022
-1
6/26/2022
-1
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 メジャーは、 inquarter() 関数を使用してチャートに作成されます。最初の引数は、評価される項目を識別します。第 2 引数は 5 月 15 日のハードコード化された日付であり、比較対象として定義sるう四半期を特定します。0 の period_no は最後の引数であり、inquarter() 関数がセグメント化された四半期の前後の四半期を比較していないことを意味します。
基準日が 5 月 15 日の inquarter() 関数の図
4 月 1 日~6 月 15 日に発生したトランザクションは、TRUE のブール値の結果を返します。
例 5 – シナリオ
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
機器のエラーにより、2022 年 5 月 15 日の四半期に製造された製品に欠陥があることが確認されています。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、およびその四半期に製造された製品のコストを表示するチャートを希望しています。
ロード スクリプト
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)
次のメジャーを作成します:
inquarter() 関数を使って、不具合のある製品とない製品を特定する =if(only(InQuarter(manufacture_date,makedate(2022,05,15),0)),'Defective','Faultless') 。
各製品の合計コストを示す =sum(cost_price) 。
次の手順を実行します。
メジャーの [数値書式 ] を [通貨 ] に設定します。
[スタイル ] で [合計 ] をオフにします。
結果テーブル
quartername(manufacture_date)
=if(only(InQuarter(manufacture_date,makedate(2022,05,15),0)),'Defective','Faultless')
Sum(cost_price)
2022 年 1 月~3 月
不具合なし
253.89
2022 年 4 月~6 月
不具合
351.48
2022 年 7 月~9 月
不具合なし
446.31
2022 年 10 月~12 月
不具合なし
163.91
inquarter() 関数は、各製品の製造日を評価するときにブール値を返します。5 月 15 日を含む四半期に製造された製品の場合、inquarter() 関数はブール値 TRUE を返し、製品を「不具合」としてマークします。FALSE の値を返し、その四半期に製造されなかった製品については、その製品に「不具合なし」のマークが付けられます。