yearname - スクリプトおよびチャート関数このページ上
この関数は、date を含む年の初日の最初のミリ秒のタイムスタンプに対応する数値を基底として、4 桁の年の表示値を返します。
yearname() 関数の時間範囲の図。
yearname() 関数は、評価する日付をオフセットし、年の最初の月を設定できるという点で、 year() 関数とは異なります。
年の最初の月が 1 月でない場合、この関数は、その日付を含む 12 か月期間を表す 2 つの 4 桁の年を返します。たとえば、年度の始まりが 4 月で、評価される日付が 06/30/2020 の場合、返される結果は 2020-2021 になります。
4 月が年の最初の月に設定された yearname() 関数の図。
構文:
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 ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
関数の例
例
結果
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 桁の年の値として返します。
2021 を年の値として示す yearname() 関数の図。
例 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 年前にシフトし、結果の年を返します。
period_no が -1 に設定された yearname() 関数の図。
例 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 を返します。
3 月が年の最初の月に設定された yearname() 関数の図。
例 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()
2021 が年の値に設定された 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