yearname - 指令碼與圖表函數在此頁面
此函數傳回四位數的年度為顯示值,其基礎數值相當於包含 date 的年度的第一天、第一毫秒的時間戳記。
yearname() 函數的時間範圍圖表。
yearname() 函數不同於 year() 函數,因為這可讓您移動您要評估的日期,並設定該年的第一個月。
若該年的第一個月不是 1 月,該函數將會傳回跨越 12 個月期間並包含該日期的兩個四位數年份。例如,若該年於 4 月開始,而評估的日期為 2020 年 6 月 30 日,則傳回的結果會是 2020-2021 。
將 4 月設定為該年第一個月的 yearname() 函數圖表。
語法:
YearName( date[, period_no[, first_month_of_year] ] )
傳回的資料類型: 雙值
date
要評估的時間戳記。
period_no
period_no 為整數,其中值 0 表示是包含 date 的年份。負值的 period_no 表示之前的年度,正值表示之後的年度。
first_month_of_year
如果要使用不起始於 1 月的 (會計) 年度,可在 first_month_of_year 中指定介於 2 和 12 之間的值。 顯示值將會是顯示兩個年度的字串。
您可以在 first_month_of_year 引數中使用下列值設定一年的第一個月:
first_month_of_year 值
月
值
二月
2
三月
3
四月
4
五月
5
六月
6
七月
7
八月
8
九月
9
十月
10
十一月
11
十二月
12
什麼情況下使用
若要按年份比較彙總,yearname() 函數很實用。例如,若您想要按年份查看產品的總銷售額。
可以使用該函數建立主要行事曆表格中的欄位 ,以在載入指令碼 中建立這些維度 。這也能在圖表 中建立以作為計算維度
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定 。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定 。
函數範例
範例
結果
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 系統變數 。
使用 yearname() 並設定為 year_name 欄位的前置載入 。
載入指令碼
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 」欄位在前置 LOAD 陳述式中的建立方式是使用 yearname() 函數並傳遞日期欄位,作為函數的引數。
yearname() 函數識別日期值落在哪一年並傳回此作為四位數年份值。
yearname() 函數圖表顯示 2021 年為年份值。
範例 2 – period_no
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
包含一組 2020 年和 2022 年之間交易的資料集,這載入到稱為「Transactions」的表格中。
設定為「MM/DD/YYYY 」的 DateFormat 系統變數。
使用 yearname() 並設定為 year_name 欄位的前置載入。
載入指令碼
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
因為 period_no 的值 -1 作為 yearname() 函數中的偏移引數使用,所以該函數首先會識別交易發生的年份。然後該函數會往前移動一年並傳回產生的年份。
具有設定為 -1 之 period_no 的 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 個月期間會跨越兩個曆年,而 yearname() 函數會為評估的日期傳回兩個四位數年份。
交易 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() 函數並傳遞日期欄位,作為函數的引數。
yearname() 函數識別日期值落在哪一年並傳回此作為四位數年份值。
yearname() 函數圖表以 2021 年為年份值。
範例 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