yearstart  - 指令碼與圖表函數
                此函數傳回的時間戳記相當於包含 date 的年份的第一天開始。預設的輸出格式為指令碼中所設定的 DateFormat。
語法:
YearStart(date[, period_no[, first_month_of_year]])
換言之,yearstart() 函數判定日期落在哪一年。然後這會以日期格式傳回該年第一毫秒的時間戳記。依照預設,該年的第一個月是 1 月;不過,您可以使用 yearstart() 函數中的 first_month_of_year 引數變更要將哪個月設為第一個月。
yearstart() 函數圖表顯示該函數可涵蓋的時間範圍。

什麼情況下使用
yearstart() 函數在您想要計算以使用一年中目前已經過的部分時,作為運算式的一部分使用。例如,若您想要計算年初至今累積的利息。
傳回的資料類型: 雙值
| 引數 | 描述 | 
|---|---|
| date | 要評估的時間戳記。 | 
| period_no | period_no 為整數,其中值 0 表示是包含 date 的年份。負值的 period_no 表示之前的年度,正值表示之後的年度。 | 
| first_month_of_year | 如果要使用不起始於 1 月的 (會計) 年度,可在 first_month_of_year 中指定介於 2 和 12 之間的值。 | 
下列月份可用於 first_month_of_year argument:
| 月 | 值 | 
|---|---|
| 二月 | 2 | 
| 三月 | 3 | 
| 四月 | 4 | 
| 五月 | 5 | 
| 六月 | 6 | 
| 七月 | 7 | 
| 八月 | 8 | 
| 九月 | 9 | 
| 十月 | 10 | 
| 十一月 | 11 | 
| 十二月 | 12 | 
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定。
| 範例 | 結果 | 
|---|---|
| yearstart('10/19/2001') | Returns 01/01/2001 00:00:00. | 
| yearstart('10/19/2001',-1) | Returns 01/01/2000 00:00:00. | 
| yearstart('10/19/2001',0,4) | Returns 04/01/2001 00:00:00. | 
範例 1 – 基本範例
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
- 
                                    
包含一組 2020 年和 2022 年之間交易的資料集,這載入到稱為「Transactions」的表格中。
 - 
                                    
已使用 DateFormat 系統變數 (MM/DD/YYYY) 格式提供日期欄位。
 - 
                                    
前置 LOAD 陳述式包含下列內容:
- 
                                            
設定為 year_start 欄位的 yearstart() 函數。
 - 
                                            
設定為 year_start_timestamp 欄位的 Timestamp() 函數
 
 - 
                                            
 
載入指令碼
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
       *, 
       yearstart(date) as year_start, 
       timestamp(yearstart(date)) as year_start_timestamp 
       ; 
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 
]; 結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- 
                                    
id
 - 
                                    
date
 - 
                                    
year_start
 - 
                                    
year_start_timestamp
 
| id | 日期 | year_start | year_start_timestamp | 
|---|---|---|---|
| 8188 | 01/13/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8189 | 02/26/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8190 | 03/27/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8191 | 04/16/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8192 | 05/21/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8193 | 08/14/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8194 | 10/07/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8195 | 12/05/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8196 | 01/22/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8197 | 02/03/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8198 | 03/17/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8199 | 04/23/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8200 | 05/04/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8201 | 06/30/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8202 | 07/26/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8203 | 12/27/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8204 | 06/06/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8205 | 07/18/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8206 | 11/14/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8207 | 12/12/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
「year_start」欄位在前置 LOAD 陳述式中的建立方式是使用 yearstart() 函數並傳遞日期欄位,作為函數的引數。
yearstart() 函數最初識別日期值落在哪一年,並傳回該年第一毫秒的時間戳記。
yearstart() 函數圖表和交易 8199。

交易 8199 發生在 2021 年 4 月 23 日。yearstart() 函數傳回該年的第一毫秒,亦即 1 月 1 日上午 12:00:00。
範例 2 – period_no
概覽
使用與第一個範例相同的資料集和情境。
不過,在此範例中,任務是要建立欄位「previous_year_start」,這傳回交易發生年份之前的年份開始日期時間戳記。
載入指令碼
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
       *, 
       yearstart(date,-1) as previous_year_start, 
       timestamp(yearstart(date,-1)) as previous_year_start_timestamp 
       ; 
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 
]; 結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- 
                                    
id
 - 
                                    
date
 - 
                                    
previous_year_start
 - 
                                    
previous_ year_start_timestamp
 
| id | 日期 | previous_year_start | previous_year_start_timestamp | 
|---|---|---|---|
| 8188 | 01/13/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8189 | 02/26/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8190 | 03/27/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8191 | 04/16/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8192 | 05/21/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8193 | 08/14/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8194 | 10/07/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8195 | 12/05/2020 | 01/01/2019 | 1/1/2019 12:00:00 AM | 
| 8196 | 01/22/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8197 | 02/03/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8198 | 03/17/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8199 | 04/23/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8200 | 05/04/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8201 | 06/30/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8202 | 07/26/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8203 | 12/27/2021 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8204 | 06/06/2022 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8205 | 07/18/2022 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8206 | 11/14/2022 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8207 | 12/12/2022 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
在此例中,因為 period_no 的值 -1 作為 yearstart() 函數中的偏移引數使用,所以該函數首先會識別交易發生的年份。然後這會查看前一年並識別該年的第一毫秒。
具有 period_no 值 -1 的 yearstart() 函數圖表。

交易 8199 發生在 2021 年 4 月 23 日。yearstart() 函數為「previous_year_start」欄位傳回前一年的第一毫秒,亦即 2020 年 1 月 1 日上午 12:00:00。
範例 3 – first_month_of_year
概覽
使用與第一個範例相同的資料集和情境。
不過,在此範例中,公司政策適用於從 4 月 1 日開始的年份。
載入指令碼
SET DateFormat='MM/DD/YYYY'; 
Transactions: 
    Load 
       *, 
       yearstart(date,0,4) as year_start, 
       timestamp(yearstart(date,0,4)) as year_start_timestamp 
       ; 
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 
];  結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- 
                                    
id
 - 
                                    
date
 - 
                                    
year_start
 - 
                                    
year_start_timestamp
 
| id | 日期 | year_start | year_start_timestamp | 
|---|---|---|---|
| 8188 | 01/13/2020 | 04/01/2019 | 4/1/2019 12:00:00 AM | 
| 8189 | 02/26/2020 | 04/01/2019 | 4/1/2019 12:00:00 AM | 
| 8190 | 03/27/2020 | 04/01/2019 | 4/1/2019 12:00:00 AM | 
| 8191 | 04/16/2020 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8192 | 05/21/2020 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8193 | 08/14/2020 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8194 | 10/07/2020 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8195 | 12/05/2020 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8196 | 01/22/2021 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8197 | 02/03/2021 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8198 | 03/17/2021 | 04/01/2020 | 4/1/2020 12:00:00 AM | 
| 8199 | 04/23/2021 | 04/01/2021 | 4/1/2021 12:00:00 AM | 
| 8200 | 05/04/2021 | 04/01/2021 | 4/1/2021 12:00:00 AM | 
| 8201 | 06/30/2021 | 04/01/2021 | 4/1/2021 12:00:00 AM | 
| 8202 | 07/26/2021 | 04/01/2021 | 4/1/2021 12:00:00 AM | 
| 8203 | 12/27/2021 | 04/01/2021 | 4/1/2021 12:00:00 AM | 
| 8204 | 06/06/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM | 
| 8205 | 07/18/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM | 
| 8206 | 11/14/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM | 
| 8207 | 12/12/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM | 
在此例中,因為 4 的 first_month_of_year 引數用於 yearstart() 函數,所以這將該年的第一天設定為 4 月 1 日,而該年的最後一天則為 3 月 31 日。
將第一個月設為 4 月的 yearstart() 函數圖表。

交易 8199 發生在 2021 年 4 月 23 日。因為 yearstart() 函數將該年的開始設定為 4 月 1 日,並傳回該日期作為交易的「year_start」值。
範例 4 – 圖表物件範例
概覽
使用與第一個範例相同的資料集和情境。
不過,在此範例中,資料集保持不變並且會載入到應用程式中。會建立傳回交易發生年份開始日期時間戳記的計算,作為應用程式圖表物件中的量值。
載入指令碼
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 
]; 結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- 
                                    
id
 - 
                                    
date
 
若要計算交易發生在哪一年,建立下列量值:
- 
                                    
=yearstart(date)
 - 
                                    
=timestamp(yearstart(date))
 
| id | 日期 | =yearstart(date) | =timestamp(yearstart(date)) | 
|---|---|---|---|
| 8188 | 06/06/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8189 | 07/18/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8190 | 11/14/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8191 | 12/12/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM | 
| 8192 | 01/22/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8193 | 02/03/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8194 | 03/17/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8195 | 04/23/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8196 | 05/04/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8197 | 06/30/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8198 | 07/26/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8199 | 12/27/2021 | 01/01/2021 | 1/1/2021 12:00:00 AM | 
| 8200 | 01/13/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8201 | 02/26/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8202 | 03/27/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8203 | 04/16/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8204 | 05/21/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8205 | 08/14/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8206 | 10/07/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
| 8207 | 12/05/2020 | 01/01/2020 | 1/1/2020 12:00:00 AM | 
「start_of_year」量值在圖表物件中的建立方式是使用 yearstart() 函數並傳遞日期欄位,作為函數的引數。
yearstart() 函數最初識別日期值落在哪一年,並傳回該年第一毫秒的時間戳記。
yearstart() 函數圖表和交易 8199。

交易 8199 發生在 2021 年 4 月 23 日。yearstart() 函數傳回該年的第一毫秒,亦即 1 月 1 日上午 12:00:00。
範例 5 – 情境
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
- 
                                    
資料集載入到稱為「Loans」的表格。該表格含有下列欄位:
- 
                                            
貸款 ID。
 - 
                                            
該年開始時的餘額。
 - 
                                            
在每年每筆貸款收取的單利率。
 
 - 
                                            
 
最終使用者希望圖表物件按貸款 ID 顯示年初至今每筆貸款已累積的目前利息。
載入指令碼
Loans: 
Load 
* 
Inline  
[ 
loan_id,start_balance,rate 
8188,$10000.00,0.024 
8189,$15000.00,0.057 
8190,$17500.00,0.024 
8191,$21000.00,0.034 
8192,$90000.00,0.084 
]; 結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- 
                                    
loan_id
 - 
                                    
start_balance
 
若要計算累積的利息,建立下列量值:
=start_balance*(rate*(today(1)-yearstart(today(1)))/365)
將量值的數字格式設定為金錢。
| loan_id | start_balance | =start_balance*(rate*(today(1)-yearstart(today(1)))/365) | 
|---|---|---|
| 8188 | $10000.00 | $39.73 | 
| 8189 | $15000.00 | $339.66 | 
| 8190 | $17500.00 | $166.85 | 
| 8191 | $21000.00 | $283.64 | 
| 8192 | $90000.00 | $3003.29 | 
yearstart() 函數使用今日日期作為其唯一引數,傳回目前年份的開始日期。以目前日期減去該結果後,運算式會傳回今年目前已經過的天數。
然後此值乘以利率並除以 365,以傳回該期間的有效利率。然後該期間的有效利率乘以貸款的開始餘額,以傳回今年目前已累積的利息。