weekday - 指令碼與圖表函數在此頁面
此函數會傳回函下列項目的雙值:
如環境變數 DayNames 中所定義的日名稱。
介於 0 至 6 之間且對應於一週中正常日 (0-6) 的整數。
語法:
weekday( date [,first_week_day =0])
傳回的資料類型: 雙值
weekday() 函數判定日期落在哪個星期幾。然後傳回代表該日子的字串值。
weekday() 函數的圖表,其傳回日期所在的日子名稱
根據一週的開始日期,結果會傳回與星期幾對應的數字值 (0-6)。例如,如果每週第一天設為星期日,星期三即會傳回 3 的數字值。此開始日期由 FirstWeekDay 系統變數 ,或是 first_week_day 函數參數判定。
您可以使用此數值作為算術運算式的一部分。例如,乘以 1 可傳回值本身。
weekday() 函數的圖表,且具有顯示日子的數字值,而不是日子名稱
什麼情況下使用
若您想要按星期幾比較會總,則 weekday() 函數很實用。例如,若您想按工作日比較產品平均銷售額。
這些維度 在載入指令碼 建立時可使用函數建立主要行事曆 表格的欄位 ;或是直接在圖表 中建立為計算量值 。
引數
date
要評估的時間戳記。
first_week_day
指定一週開始的日期。如果忽略,將使用變數 FirstWeekDay 的值。
FirstWeekDay
您可以在 first_week_day 引數中使用下列值設定一週開始的日期:
first_week_day 值
日
值
星期一
0
星期二
1
星期三
2
星期四
3
星期五
4
星期六
5
星期日
6
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定 。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定 。
資訊備註 除非另有說明,否則在這些範例中 FirstWeekDay 會設為 0 。
函數範例
範例
結果
weekday('10/12/1971')
傳回 'Tue' 和 1。
weekday('10/12/1971' , 6)
傳回 'Tue' 和 2。
在此範例中,星期日 (6 ) 是一週的第一天。
SET FirstWeekDay=6;
...
weekday('10/12/1971')
傳回 'Tue' 和 2。
範例 1 - 工作日字串
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
包含一組 2022 年交易的資料集 ,這載入到稱為「Transactions 」的表格中。
設定為 6 (星期日) 的 FirstWeekDay 系統變數。
設為使用預設日期名稱的 DayNames 變數。
包含 weekday() 函數的前置載入 ,且設為「week_day 」欄位並傳回交易發生的工作日。
載入指令碼
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day
;
Load
*
Inline
[
id,date,amount
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.39
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
id
日期
week_day
8188
01/01/2022
星期六
8189
01/02/2022
星期日
8190
01/03/2022
星期一
8191
01/04/2022
星期二
8192
01/05/2022
星期三
8193
01/06/2022
星期四
8194
01/07/2022
星期五
「week_day 」欄位在前置 LOAD 陳述式中的建立方式是使用 weekday() 函數並傳遞日期欄位,作為函數的引數。
weekday() 函數傳回工作日字串值;亦即傳回由 DayNames 系統變數設定的工作日名稱。
weekday() 函數的圖表,並為交易 8192 工作日傳回星期三
交易 8192 發生在 1 月 5 日。FirstWeekDay 系統變數會將每週第一天設為星期日。weekday() 函數交易發生在星期三並傳回此值,且為 DayNames 系統變數的縮寫形式並位於 week_day 欄位。
「week_day 」欄位中的值在資料行中向右對齊,因為欄位有雙值數字和文字結果 (星期三、3)。若要將欄位值轉換為等同數字的值,欄位即可在 num() 函數內換行。例如在交易 8192 中,星期三值會轉換為數字 3。
範例 2 – first_week_day
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
包含一組 2022 年交易的資料集,這載入到稱為 Transactions 的表格中。
設定為 6 (星期日) 的 FirstWeekDay 系統變數。
設為使用預設日期名稱的 DayNames 變數。
包含 weekday() 函數的先前載入,且設為「week_day 」欄位並傳回交易發生的工作日。
載入指令碼
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date,1) as week_day
;
Load
*
Inline
[
id,date,amount
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.39
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
id
日期
week_day
8188
01/01/2022
星期六
8189
01/02/2022
星期日
8190
01/03/2022
星期一
8191
01/04/2022
星期二
8192
01/05/2022
星期三
8193
01/06/2022
星期四
8194
01/07/2022
星期五
weekday() 函數的圖表,顯示星期三有 1 的雙值數字值
因為 first_week_day 引數在 weekday() 函數中設為 1 ,所以每週第一天是星期二。因此,所有發生在星期二的交易會有 0 的雙值數字值。
交易 8192 發生在 1 月 5 日。weekday() 函數識別這是星期三,所以運算式會傳回 1 的雙值數字值。
範例 3 – 圖表物件範例
載入指令碼和圖表運算式
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
不過,在此範例中,資料集保持不變並且會載入到應用程式中。識別工作日值的計算在應用程式 圖表中建立為量值。
載入指令碼
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
Load
*
Inline
[
id,date,amount
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.39
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
若要計算工作日值,請建立下列量值:
結果表格
id
日期
=weekday(date)
8188
01/01/2022
星期六
8189
01/02/2022
星期日
8190
01/03/2022
星期一
8191
01/04/2022
星期二
8192
01/05/2022
星期三
8193
01/06/2022
星期四
8194
01/07/2022
星期五
「=weekday(date) 」欄位在圖表中的建立方式是使用 weekday() 函數並傳遞日期欄位,作為函數的引數。
weekday() 函數傳回工作日字串值;亦即傳回由 DayNames 系統變數設定的工作日名稱。
weekday() 函數的圖表,並為交易 8192 工作日傳回星期三
交易 8192 發生在 1 月 5 日。FirstWeekDay 系統變數會將每週第一天設為星期日。weekday() 函數交易發生在星期三並傳回此值,且為 DayNames 系統變數的縮寫形式並位於 =weekday(date) 欄位。
範例 4 – 情境
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
最終使用者希望圖表按工作日呈現交易的平均銷售額。
載入指令碼
SET DateFormat='MM/DD/YYYY';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET FirstWeekDay=6;
Transactions:
LOAD
RecNo() AS id,
MakeDate(2022, 1, Ceil(Rand() * 31)) as date,
Rand() * 1000 AS amount
Autogenerate(1000);
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
=weekday(date)
=avg(amount)
將量值的數字格式 設定為金錢 。
結果表格
=weekday(date)
Avg(amount)
星期日
$536.96
星期一
$500.80
星期二
$515.63
星期三
$509.21
星期四
$482.70
星期五
$441.33
星期六
$505.22