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 Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。
信息注释 在以下示例中,FirstWeekDay 设置为 0 (除非另有说明)。
函数示例
Example
结果
weekday('10/12/1971')
返回 “Tue” 和 1。
weekday('10/12/1971' , 6)
返回 “Tue” 和 2。
在此示例中,Sunday (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
Sat
8189
01/02/2022
Sun
8190
01/03/2022
Mon
8191
01/04/2022
Tue
8192
01/05/2022
Wed
8193
01/06/2022
Thu
8194
01/07/2022
Fri
通过使用 weekday() 函数并将日期字段作为函数的参数传递,在前面的 LOAD 语句中创建了 ‘week_day ’ 字段。
weekday() 函数返回工作日字符串值;也就是说,它返回由 DayNames 系统变量设置的工作日的名称。
返回周三作为交易 8192 的工作日的 weekday() 函数的图表
交易 8192 发生在 1 月 5 日。FirstWeekDay 系统变量将一周的第一天设置为星期天。weekday() 函数交易发生在星期三,并在 week_day 字段中以 DayNames 系统变量的缩写形式返回该值。
‘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
Sat
8189
01/02/2022
Sun
8190
01/03/2022
Mon
8191
01/04/2022
Tue
8192
01/05/2022
Wed
8193
01/06/2022
Thu
8194
01/07/2022
Fri
周三显示的 weekday() 函数图表具有双数值 1
因为 first_week_day 参数在 weekday() 函数中设置为 1 ,所以一周的第一天是星期二。因此,周二发生的所有交易都将具有双数值 0 。
交易 8192 发生在 1 月 5 日。weekday() 函数标识这是星期三,因此表达式将返回双数值 1 。
示例 3 – 图表对象示例
加载脚本和图表表达式
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
包含 2022 年交易集的数据集,该数据集加载到名为 ‘Transactions ’ 的表中。
设置为 6 (星期日)的 FirstWeekDay 系统变量。
设置为使用默认日期名称的 DayNames 变量。
然而,在本例中,未更改的数据集被加载到应用程序中。标识工作日值的计算在应用程序的图表中创建为度量。
加载脚本
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
Sat
8189
01/02/2022
Sun
8190
01/03/2022
Mon
8191
01/04/2022
Tue
8192
01/05/2022
Wed
8193
01/06/2022
Thu
8194
01/07/2022
Fri
通过使用 weekday() 函数并将日期字段作为函数的参数传递,在图表中创建了 ‘=weekday(date) ’ 字段。
weekday() 函数返回工作日字符串值;也就是说,它返回由 DayNames 系统变量设置的工作日的名称。
返回周三作为交易 8192 的工作日的 weekday() 函数的图表
交易 8192 发生在 1 月 5 日。FirstWeekDay 系统变量将一周的第一天设置为星期天。weekday() 函数交易发生在星期三,并在 =weekday(date) 字段中以 DayNames 系统变量的缩写形式返回该值。
示例 4 – 场景
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
包含 2022 年交易集的数据集,该数据集加载到名为 ‘Transactions ’ 的表中。
设置为 6 (星期日)的 FirstWeekDay 系统变量。
设置为使用默认日期名称的 DayNames 变量。
最终用户希望得到一个图表,该图表按工作日显示交易的平均销售额。
加载脚本
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)
Sun
$536.96
Mon
$500.80
Tue
$515.63
Wed
$509.21
Thu
$482.70
Fri
$441.33
Sat
$505.22