yearname - スクリプトおよびチャート関数
この関数は、date を含む年の初日の最初のミリ秒のタイムスタンプに対応する数値を基底として、4 桁の年の表示値を返します。
yearname() 関数は、評価する日付をオフセットし、年の最初の月を設定できるという点で、 year() 関数とは異なります。
年の最初の月が 1 月でない場合、この関数は、その日付を含む 12 か月期間を表す 2 つの 4 桁の年を返します。たとえば、年度の始まりが 4 月で、評価される日付が 06/30/2020 の場合、返される結果は 2020-2021になります。
構文:
YearName(date[, period_no[, first_month_of_year]] )
戻り値データ型: dual
date
|
評価する日付またはタイムスタンプ。 |
period_no
|
period_no は整数で、値 0 は date を含む年を示します。period_no の値が負の場合は過去の年を、正の場合は将来の年を示します。 |
first_month_of_year
|
事業年度が 1 月以外の月に始まる場合は、first_month_of_year で 2 から 12 の間の値を指定します。 表示値は、2 年を表す文字列になります。 |
次の値を使用して、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 |
使用に適しているケース
yearname() 関数は、集計を年ごとに比較するのに役立ちます。たとえば、製品の総売上高を年ごとに表示する場合などが考えられます。
これらの軸は、関数を使用してマスター カレンダー テーブルに項目を作成することにより、ロード スクリプトで作成できます。また、計算軸としてチャートで作成することもできます
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「アプリとスクリプトの地域設定の変更」を参照してください。
アプリの既定地域設定は、ユーザー プロファイルに基づいています。これらの地域の書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。
アプリの作成者は、作成するアプリの既定の地域を設定できます。詳細については、「Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定」を参照してください。
関数の例
例 |
結果 |
yearname('10/19/2001') |
「2001」を返します。 |
yearname('10/19/2001',-1) |
「2000」を返します。 |
yearname('10/19/2001',0,4) |
「2001-2002」を返します。 |
例 1 – 追加の引数なし
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2020 年~2022 年の一連のトランザクションを含むデータセットは、「Transactions」というテーブルにロードされます。
-
「MM/DD/YYYY」に設定された DateFormat システム変数。
-
year_name 項目として設定されている yearname() 関数を使用する先行する LOAD。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date) as year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付 |
year_name |
01/13/2020 |
2020 |
02/26/2020 |
2020 |
03/27/2020 |
2020 |
04/16/2020 |
2020 |
05/21/2020 |
2020 |
08/14/2020 |
2020 |
10/07/2020 |
2020 |
12/05/2020 |
2020 |
01/22/2021 |
2021 |
02/03/2021 |
2021 |
03/17/2021 |
2021 |
04/23/2021 |
2021 |
05/04/2021 |
2021 |
06/30/2021 |
2021 |
07/26/2021 |
2021 |
12/27/2021 |
2021 |
06/06/2022 |
2022 |
07/18/2022 |
2022 |
11/14/2022 |
2022 |
12/12/2022 |
2022 |
「year_name」項目は、yearname() 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
yearname() 関数は、日付値がどの年に該当するかを識別し、これを 4 桁の年の値として返します。
例 2 – period_no
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
2020 年~2022 年の一連のトランザクションを含むデータセットは、「Transactions」というテーブルにロードされます。
-
「MM/DD/YYYY」に設定された DateFormat システム変数。
-
year_name 項目として設定されている yearname() 関数を使用する先行ロード。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date,-1) as prior_year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付 |
prior_year_name |
01/13/2020 |
2019 |
02/26/2020 |
2019 |
03/27/2020 |
2019 |
04/16/2020 |
2019 |
05/21/2020 |
2019 |
08/14/2020 |
2019 |
10/07/2020 |
2019 |
12/05/2020 |
2019 |
01/22/2021 |
2020 |
02/03/2021 |
2020 |
03/17/2021 |
2020 |
04/23/2021 |
2020 |
05/04/2021 |
2020 |
06/30/2021 |
2020 |
07/26/2021 |
2020 |
12/27/2021 |
2020 |
06/06/2022 |
2021 |
07/18/2022 |
2021 |
11/14/2022 |
2021 |
12/12/2022 |
2021 |
-1 の period_no が yearname() 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生する年を識別します。次に、関数は 1 年前にシフトし、結果の年を返します。
例 3 – first_month_of_year
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date,0,4) as year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
日付 |
year_name |
01/13/2020 |
2019-2020 |
02/26/2020 |
2019-2020 |
03/27/2020 |
2019-2020 |
04/16/2020 |
2020-2021 |
05/21/2020 |
2020-2021 |
08/14/2020 |
2020-2021 |
10/07/2020 |
2020-2021 |
12/05/2020 |
2020-2021 |
01/22/2021 |
2020-2021 |
02/03/2021 |
2020-2021 |
03/17/2021 |
2020-2021 |
04/23/2021 |
2021-2022 |
05/04/2021 |
2021-2022 |
06/30/2021 |
2021-2022 |
07/26/2021 |
2021-2022 |
12/27/2021 |
2021-2022 |
06/06/2022 |
2022-2023 |
07/18/2022 |
2022-2023 |
11/14/2022 |
2022-2023 |
12/12/2022 |
2022-2023 |
4 の first_month_of_year 引数が yearname() 関数で使用されているため、年度の始めが 1 月 1 日から 4 月 1 日に移動します。したがって、各 12 か月は 2 つの暦年にまたがり、 yearname() 関数は評価される日付の年に対して 2 つの 4 桁の数字を返します。
トランザクション 8198 は 2021 年 3 月 17 日に発生します。yearname() 関数は、年度初めを 4 月 1 日に、終わりを 3 月 30 日に設定します。したがって、トランザクション 8198 は、2020 年 4 月 1 日~2021 年 3 月 30 日の期間に発生したことになります。その結果、yearname() 関数は値 2020-2021 を返します。
例 4 – チャート オブジェクトの例
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただし、トランザクションが発生した年を返す項目は、チャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
date
「year_name」項目を計算するには、次のメジャーを作成します。
=yearname(date)
結果テーブル
日付 |
=yearname(date) |
01/13/2020 |
2020 |
02/26/2020 |
2020 |
03/27/2020 |
2020 |
04/16/2020 |
2020 |
05/21/2020 |
2020 |
08/14/2020 |
2020 |
10/07/2020 |
2020 |
12/05/2020 |
2020 |
01/22/2021 |
2021 |
02/03/2021 |
2021 |
03/17/2021 |
2021 |
04/23/2021 |
2021 |
05/04/2021 |
2021 |
06/30/2021 |
2021 |
07/26/2021 |
2021 |
12/27/2021 |
2021 |
06/06/2022 |
2022 |
07/18/2022 |
2022 |
11/14/2022 |
2022 |
12/12/2022 |
2022 |
「year_name」メジャーは、yearname() 関数を使用し、関数の引数として日付項目を渡すことにより、チャート オブジェクトで作成されます。
関数は、日付値がどの年に該当するかを識別し、これを 4 桁の年の値として返します。yearname()
例 5 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
エンド ユーザーは、トランザクションの四半期ごとの総売上高を示すチャートを求めています。yearname() 軸がデータ モデルで使用できない場合は、 yearname() 関数を計算軸として使用してこのチャートを作成します。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
結果
データをロードしてシートを開きます。新しいテーブルを作成します。
集計を年別に比較するには、次の計算軸を作成します:
=yearname(date)
このメジャーを作成します:
=sum(amount)
メジャーの [数値書式] を [通貨] に設定します。
結果テーブル
yearname(date) |
=sum(amount) |
2020 |
$463.55 |
2021 |
$457.69 |
2022 |
$294.35 |