second - 脚本和图表函数
此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示秒的整数。
语法:
second (expression)
返回数据类型: 整数
适用场景
当您希望按秒比较聚合时,second() 函数非常有用。例如,如果希望按秒查看活动计数分布,可以使用该函数。
这些维度可以在加载脚本中创建,方法是使用函数在主日历表中创建字段,也可以直接在图表中用作计算维度。
示例 | 结果 |
---|---|
second( '09:14:36' ) |
返回 36 |
second( '0.5555' ) |
返回 55(因为 0.5555 = 13:19:55) |
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。
应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。
示例 1 – 变量
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
按时间戳包含交易的数据集,加载到名为 Transactions 的表格中。
-
使用默认 TimeStamp 系统变量 (M/D/YYYY h:mm:ss[.fff] TT)。
-
创建字段 second,以计算购买发生的时间。
加载脚本
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*,
second(date) as second
;
Load
*
Inline
[
id,date,amount
9497,'01/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/03/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/05/2022 7:34:46 PM',13.24
9503,'01/06/2022 10:58:34 PM',74.34
9504,'01/06/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
9506,'01/06/2022 8:49:09 AM',74.23
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
date
-
second
日期 | second |
---|---|
01/01/2022 10:10:22 PM | 22 |
01/02/2022 8:35:54 AM | 54 |
01/03/2022 5:40:49 AM | 49 |
01/03/2022 2:21:53 PM | 53 |
01/04/2022 6:49:38 PM | 38 |
01/05/2022 7:04:57 PM | 57 |
01/05/2022 7:34:46 PM | 46 |
01/06/2022 8:49:09 AM | 9 |
01/06/2022 11:29:38 AM | 38 |
01/06/2022 10:58:34 PM | 34 |
second 字段中的值是通过使用 second() 函数并将日期作为前置 Load 语句中的表达式传递来创建的。
示例 2 – 图表对象
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含与第一个示例相同的数据集和场景。然而,在本例中,未更改的数据集被加载到应用程序中。 second 通过图表对象中的度量计算值。
加载脚本
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*
Inline
[
id,date,amount
9497,'01/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/03/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/05/2022 7:34:46 PM',13.24
9503,'01/06/2022 10:58:34 PM',74.34
9504,'01/06/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
9506,'01/06/2022 8:49:09 AM',74.23
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:date。
创建以下度量:
=second(date)
日期 | =second(date) |
---|---|
01/01/2022 10:10:22 PM | 22 |
01/02/2022 8:35:54 AM | 54 |
01/03/2022 5:40:49 AM | 49 |
01/03/2022 2:21:53 PM | 53 |
01/04/2022 6:49:38 PM | 38 |
01/05/2022 7:04:57 PM | 57 |
01/05/2022 7:34:46 PM | 46 |
01/06/2022 8:49:09 AM | 9 |
01/06/2022 11:29:38 AM | 38 |
01/06/2022 10:58:34 PM | 34 |
second 的值是通过使用 second() 函数并将日期作为表达式传递给图表对象的度量来创建的。
示例 3 – 场景
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
时间戳数据集,用于表示特定节日门票销售网站的流量。这些时间戳和相应的 id被加载到名为 Web_Traffic 的表中。
-
使用了 TimeStamp 系统变量 M/D/YYYY h:mm:ss[.fff] TT。
在这种情况下,共有 10000 张门票,于 2021 年 5 月 20 日上午 9:00 开始发售。一分钟后,票卖完了。
用户想要一个图表对象,以秒为单位显示网站的访问次数。
加载脚本
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
tmpTimeStampCreator:
load
makedate(2022,05,20) as date
AutoGenerate 1;
join load
maketime(9+floor(rand()*2),0,floor(rand()*59)) as time
autogenerate 10000;
Web_Traffic:
load
recno() as id,
timestamp(date + time) as timestamp
resident tmpTimeStampCreator;
drop table tmpTimeStampCreator;
结果
执行以下操作:
-
加载数据并打开工作表。新建表格。
-
接下来,使用以下表达式创建计算尺寸:
=second(timestamp)
-
创建聚合度量值以计算条目总数:
=count(id)
结果表与下表相似,但聚合度量不同:
second(timestamp) | =count(id) |
---|---|
0 | 150 |
1 | 184 |
2 | 163 |
3 | 178 |
4 | 179 |
5 | 158 |
6 | 177 |
7 | 169 |
8 | 149 |
9 | 186 |
10 | 169 |
11 | 179 |
12 | 186 |
13 | 182 |
14 | 180 |
15 | 153 |
16 | 191 |
17 | 203 |
18 | 158 |
19 | 159 |
20 | 163 |
+ 39 更多行 |