quarterend - スクリプトおよびチャート関数
この関数は、date を含む四半期の最後のミリ秒のタイムスタンプに相当する値を返します。デフォルトの出力形式は、スクリプトに設定されている DateFormat です。
構文:
QuarterEnd(date[, period_no[, first_month_of_year]])
戻り値データ型: dual
quarterend() 関数は、日付がどの四半期に該当するかを判断します。次に、その四半期の最後の月の最後のミリ秒のタイムスタンプを日付形式で返します。年の最初の月は、既定では 1 月です。ただし、quarterend() 関数で first_month_of_year 引数を使用して、どの月を最初に設定するかを変更することができます。
使用に適しているケース
quarterend() 関数は、ユーザーがまだ発生していない四半期の端数を計算に使用する場合に、数式の一部としてよく使用されます。たとえば、その四半期にまだ発生していない利息の合計を計算したい場合などに使います。
引数 | 説明 |
---|---|
date | 評価する日付またはタイムスタンプ。 |
period_no | period_no は整数で、値 0 は date を含む四半期を示します。period_no の値が負の場合は過去の四半期を、正の場合は将来の四半期を示します。 |
first_month_of_year | 事業年度が 1 月以外の月に始まる場合は、first_month_of_year で 2 から 12 の間の値を指定します。 |
次の値を使用して、first_month_of_year 引数に年の最初の月を設定できます。
月 | 値 |
---|---|
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 は使用しているブラウザと同じ言語で表示されます。
例 | 結果 |
---|---|
quarterend('10/29/2005') | 12/31/2005 23:59:59 を返します。 |
quarterend('10/29/2005', -1) | 09/30/2005 23:59:59 を返します。 |
quarterend('10/29/2005', 0, 3) | 11/30/2005 23:59:59 を返します。 |
例 1 – 基本的な例
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Transactions」というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
-
次を含む、先行する LOAD:
-
[end_of_quarter] 項目として設定され、トランザクションが発生する四半期の終わりのタイムスタンプを返す quarterend() 関数。
-
[end_of_quarter_timestamp] 項目として設定され、選択した四半期の終わりのタイムスタンプを返す timestamp() 関数。
-
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date) as end_of_quarter,
timestamp(quarterend(date)) as end_of_quarter_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
end_of_quarter
-
end_of_quarter_timestamp
ID | 日付 | end_of_quarter | end_of_quarter_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8190 | 2/5/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8191 | 2/28/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8198 | 7/9/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
[end_of_quarter] 項目は、quarterend() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
quarterend() 関数は、最初に日付値がどの四半期に該当するかを識別し、次にその四半期の最後のミリ秒のタイムスタンプを返します。
トランザクション 8203 は 8 月 8 日に発生しました。quarterend() 関数は、トランザクションが第 3 四半期に発生したことを特定し、その四半期の最後のミリ秒である 9 月 30 日 11:59:59 PM を返します。
例 2 – period_no
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
-
次を含む、先行する LOAD:
-
[previous_quarter_end] 項目として設定され、トランザクションが発生する前の四半期の終わりのタイムスタンプを返す quarterend() 関数。
-
[previous_end_of_quarter_timestamp] 項目として設定され、トランザクションが発生する前の四半期の終わりの正確なタイムスタンプを返す timestamp() 関数。
-
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, -1) as previous_quarter_end,
timestamp(quarterend(date, -1)) as previous_quarter_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
-
previous_quarter_end
-
previous_quarter_end_timestamp
ID | 日付 | previous_quarter_end | previous_quarter_end_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8189 | 1/19/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8190 | 2/5/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8191 | 2/28/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8192 | 3/16/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
8193 | 4/1/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8194 | 5/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8195 | 5/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8198 | 7/9/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8207 | 10/29/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
-1 の period_no が quarterend() 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生する四半期を識別します。次に、1 四半期前にずらして、その四半期の最後のミリ秒を識別します。
トランザクション 8203 は 8 月 8 日に発生しました。quarterend() 関数は、トランザクション発生前の四半期は 4 月 1 日~6 月 30 日に発生したことを特定しています。次に関数は、その四半期の最後のミリ秒である 6 月 30 日 11:59:59 PM を返します。
例 3 – first_month_of_year
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。
-
次を含む、先行する LOAD:
-
[end_of_quarter] 項目として設定され、トランザクションが発生する四半期の終わりのタイムスタンプを返す quarterend() 関数。
-
[end_of_quarter_timestamp] 項目として設定され、選択した四半期の終わりのタイムスタンプを返す timestamp() 関数。
-
ただし、この例では、会社ポリシーで会計年度が 3 月 1 日に発生することが定められています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterend(date, 0, 3) as end_of_quarter,
timestamp(quarterend(date, 0, 3)) as end_of_quarter_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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
];
結果
ID | 日付 | end_of_quarter | end_of_quarter_timestamp |
---|---|---|---|
8188 | 1/7/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8189 | 1/19/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8190 | 2/5/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8191 | 2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
8192 | 3/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8194 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8195 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
8196 | 6/15/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8197 | 6/26/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8198 | 7/9/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8199 | 7/22/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8200 | 7/23/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8201 | 7/27/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8202 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8203 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8204 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
8205 | 9/26/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
8207 | 10/29/2022 | 11/30/2022 | 11/30/2022 11:59:59 PM |
first_month_of_year 引数である 3 が quarterend() 関数で使用されるため、年度の始めが 1 月 1 日から 3 月 1 日に移動します。
トランザクション 8203 は 8 月 8 日に発生しました。年度の始まりは 3 月 1 日なので、年度の四半期は 3~5 月、6~8 月、9~11 月、12~2 月の間に発生します。
quarterend() 関数は、トランザクションが 6 月始めと 8 月終わりの間の四半期に発生したことを特定し、その四半期の最後のミリ秒である 8 月 31 日 11:59:59 PM を返します。
例 4 – チャート オブジェクトの例
概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した四半期の終わりのタイムスタンプを返す計算は、アプリのチャートのメジャーとして作成されます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
id
-
date
トランザクションが発生する四半期の終わりを計算するには、次のメジャーを作成します。
-
=quarterend(date)
-
=timestamp(quarterend(date))
ID | 日付 | =quarterend(date) | =timestamp(quarterend(date)) |
---|---|---|---|
8188 | 1/7/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8189 | 1/19/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8190 | 2/5/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8191 | 2/28/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
8193 | 4/1/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8194 | 5/7/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8195 | 5/16/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
8198 | 7/9/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8199 | 7/22/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8200 | 7/23/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8201 | 7/27/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8202 | 8/2/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8203 | 8/8/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8204 | 8/19/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8205 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
8206 | 10/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
8207 | 10/29/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
[end_of_quarter] 項目は、quarterend() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
quarterend() 関数は、最初に日付値がどの四半期に該当するかを識別し、次にその四半期の最後のミリ秒のタイムスタンプを返します。
トランザクション 8203 は 8 月 8 日に発生しました。quarterend() 関数は、トランザクションが第 3 四半期に発生したことを特定し、その四半期の最後のミリ秒である 9 月 30 日 11:59:59 PM を返します。
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Employee_Expenses」というテーブルにロードされるデータセット。テーブルには次の項目が含まれています。
-
従業員 ID
-
従業員名
-
各従業員の平均日次経費請求。
-
エンド ユーザーは、従業員 ID と従業員名別に、その四半期の残りの期間にまだ発生する推定経費請求を表示するグラフ オブジェクトを求めています。会計年度は 1 月に始まります。
ロード スクリプト
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
-
employee_id
-
employee_name
累積利息を計算するには、次のメジャーを作成します。
-
=(quarterend(today(1))-today(1))*avg_daily_claim
メジャーの [数値書式] を [通貨] に設定します。
employee_id | employee_name | =(quarterend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $480.00 |
183 | Deryck | $400.00 |
184 | Dexter | $400.00 |
185 | Sydney | $864.00 |
186 | Agatha | $576.00 |
quarterend() 関数は、今日の日付を唯一の引数として使用す、現在の月の終了日を返します。次に、年の終了日から今日の日付を引き、数式が今月の残りの日数を返します。
次に、この値に各従業員による 1 日あたりの平均経費請求額を乗算して、四半期の残り期間に各従業員が行うと予想される請求の推定額を計算します。