weekyear - 指令碼與圖表函數在此頁面
此函數會根據環境變數 傳回週數所屬於的年份。週數的範圍介於 1 和約 52 之間。
語法:
weekyear( timestamp [, first_week_day [, broken_weeks [, reference_day]]] )
傳回的資料類型: 整數
引數
timestamp
要評估的時間戳記。
first_week_day
指定一週開始的日期。如果忽略,將使用變數 FirstWeekDay 的值。
first_week_day 可能的值是對星期一使用 0、對星期二使用 1,對星期三使用 2,對星期四使用 3,對星期五使用 4,對星期六使用 5,並對星期日使用 6。
如需系統變數的更多資訊,請參閱 FirstWeekDay 。
broken_weeks
如果您未指定 broken_weeks ,則變數 BrokenWeeks 的值將用於定義週是否中斷。
如需系統變數的更多資訊,請參閱 BrokenWeeks
reference_day
如果您不指定 reference_day ,變數 ReferenceDay 的值將用於定義要設定一月份的哪一天為參照日以定義第 1 週。依照預設,Qlik Sense 函數使用 4 作為參照日。這表示第 1 週必須包含 1 月 4 日,或者換言之,第 1 週必須始終至少在 1 月擁有 4 日。
如需系統變數的更多資訊,請參閱 ReferenceDay
weekyear() 函數判定日期落在一年中的哪一週。然後這會傳回與該週數對應的年份。
若 BrokenWeeks 設定為 0 (false),weekyear() 將會傳回與 year() 相同的內容。
weekyear() 函數範圍的圖表
但是,若 BrokenWeeks 系統變數設為使用未中斷的週,第 1 週只能根據 ReferenceDay 系統變數中指定的值,包含 1 月中的特定天數。
例如,若使用 ReferenceDay 的值 4 ,第 1 週只能至少包括 1 月中的四天。第 1 週有可能包括前一年 12 月的日期,或是一年最後一週的數字有可能包括下一年 1 月的日期。在此類情況下,weekyear() 函數會傳回 year() 函數的不同值。
使用未中斷的週時,weekyear() 函數範圍的圖表
什麼情況下使用
若您想要按年份比較彙總,則 weekyear() 函數很實用。例如,若您想要按年份查看產品的總銷售額。若使用者想要在應用程式 中保留與 BrokenWeeks 系統變數的一致性,即會選擇 weekyear() 函數,而不是 year() 。
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定 。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定 。
函數範例
範例
結果
weekyear('12/30/1996',0,0,4)
傳回 1997,因為 1997 年第 1 週開始於 12/30/1996
weekyear('01/02/1997',0,0,4)
傳回 1997
weekyear('12/28/1997',0,0,4)
傳回 1997
weekyear('12/30/1997',0,0,4)
傳回 1998,因為 1998 年第 1 週開始於 12/29/1997
weekyear('01/02/1999',0,0,4)
傳回 1998,因為 1998 年第 53 週結束於 01/03/1999
範例 1 - 中斷的週
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
載入指令碼
SET BrokenWeeks=1;
Transactions:
Load
*,
week(date) as week,
weekyear(date) as week_year
;
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
id
日期
週
weekyear
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
「week_year 」欄位在前置 LOAD 陳述式中的建立方式是使用 weekyear() 函數並傳遞日期欄位,作為函數的引數。
BrokenWeeks 系統變數設為 1 ,表示應用程式使用中斷的週。第 1 週開始於 1 月 1 日。
使用中斷的週時,weekyear() 函數範圍的圖表
交易 8181 發生在 1 月 2 日,亦即第 1 週的一部分。因此,這會傳回「week_year 」欄位在 2021 年的值。
範例 2 - 未中斷的週
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
但是在此範例中,公司政策會使用未中斷的週。
載入指令碼
SET BrokenWeeks=0;
Transactions:
Load
*,
week(date) as week,
weekyear(date) as week_year
;
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
id
日期
週
weekyear
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
53
2020
8181
01/02/2021
53
2020
8182
01/03/2021
1
2021
8183
01/04/2021
1
2021
8184
01/05/2021
1
2021
8185
01/06/2021
1
2021
8186
01/07/2021
1
2021
BrokenWeeks 系統變數設為 0 ,表示應用程式使用未中斷的週。因此,第 1 週不需要開始於 1 月 1 日。
2020 年第 53 週延續至 2021 年 1 月 2 日結束,而 2020 年第 1 週開始於 2021 年 1 月 3 日星期日。
使用未中斷的週時,weekyear() 函數範圍的圖表
交易 8181 發生在 1 月 2 日,亦即第 1 週的一部分。因此,這會傳回「week_year 」欄位在 2021 年的值。
範例 3 – 圖表物件範例
載入指令碼和圖表運算式
概覽
使用與第一個範例相同的資料集和情境。
不過,在此範例中,資料集保持不變並且會載入到應用程式中。會建立傳回交易發生年份週數的計算,作為應用程式圖表中的量值 。
載入指令碼
SET BrokenWeeks=1;
Transactions:
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
若要計算交易發生的週,建立下列量值:
若要根據週數計算交易發生的年份,建立下列量值:
結果表格
id
日期
週
weekyear
8176
12/28/2020
53
2020
8177
12/29/2020
53
2020
8178
12/30/2020
53
2020
8179
12/31/2020
53
2020
8180
01/01/2021
1
2021
8181
01/02/2021
1
2021
8182
01/03/2021
2
2021
8183
01/04/2021
2
2021
8184
01/05/2021
2
2021
8185
01/06/2021
2
2021
8186
01/07/2021
2
2021
「week_year 」欄位在前置 LOAD 陳述式中的建立方式是使用 weekyear() 函數並傳遞日期欄位,作為函數的引數。
BrokenWeeks 系統變數設為 1 ,表示應用程式使用中斷的週,且第 1 週開始於 1 月 1 日。
使用中斷的週時,weekyear() 函數範圍的圖表
交易 8181 發生在 1 月 2 日,亦即第 1 週的一部分。因此,這會傳回「week_year 」欄位在 2021 年的值。
範例 4 – 情境
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
包含一組 2020 年最後一週和 2021 年第一週交易的資料集,這載入到稱為「Transactions 」的表格中。
設定為「0 」的 BrokenWeeks 變數。這表示應用程式會使用未中斷的週。
設定為「2 」的 ReferenceDay 變數。這表示該年開始於 1 月 2 日,並至少包含 1 月中的兩天。
設定為「1 」的 FirstWeekDay 變數。這表示每週第一天是星期二。
公司政策會使用中斷的週。最終使用者希望圖表按年份呈現總銷售額。應用程式使用未中斷的週,且第 1 週至少包含 1 月中的兩天。
載入指令碼
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET FirstWeekDay=1;
Transactions:
Load
*
Inline
[
id,date,amount
8176,12/28/2020,19.42
8177,12/29/2020,23.80
8178,12/30/2020,82.06
8179,12/31/2020,40.56
8180,01/01/2021,37.23
8181,01/02/2021,17.17
8182,01/03/2021,88.27
8183,01/04/2021,57.42
8184,01/05/2021,67.42
8185,01/06/2021,23.80
8186,01/07/2021,82.06
];
結果
載入資料並開啟工作表 。建立新的表格。
若要根據週數計算交易發生的年份,建立下列量值:
若要計算總銷售額,建立下列量值:
將量值的數字格式 設定為金錢 。
結果表格
weekyear(date)
=sum(amount)
2020
19.42
2021
373.37