inquarter - 脚本和图表函数在该页面上
此函数用于返回 True ,如果 timestamp 位于包含 base_date 的季度以内。
语法:
InQuarter
( timestamp, base_date, period_no[, first_month_of_year] )
返回数据类型: 布尔值
在 Qlik Sense 中,布尔 true 值由 -1 表示,false 值由 0 表示。
inquarter() 函数范围的图表
换句话说,inquarter() 函数在 1 月 1 日至 12 月 31 日期间将一年分为四个相等的季度。您可以使用 first_month_of_year 参数更改应用程序中的第一个月,季度将根据该参数进行更改。函数 base_date 确定应将哪个季度用作函数的比较器。最后,该函数在将日期值与该季度段进行比较时返回布尔结果。
适用场景
inquarter() 函数返回布尔值结果。通常,这种类型的函数将用作 if expression 中的条件。这将返回一个聚合或计算,该聚合或计算取决于日期是否发生在所选季度。
例如,inquarter() 函数可用于根据设备制造日期识别季度段内制造的所有设备。
参数
timestamp
想要用来与 base_date 进行比较的日期。
base_date
日期用于计算季度的值。
period_no
该季度可通过 period_no 偏移。period_no 为整数,其中值 0 表示该季度包含 base_date 。period_no 为负数表示前几季,为正数则表示随后的几季。
first_month_of_year
如果您不想从一月开始处理(财政)年,可在 first_month_of_year 中指定一个介于 2 和 12 之间的值。
可以使用以下值在 first_month_of_year 参数中设置一年中的第一个月:
first_month_of_year 值
月
值
二月
2
三月
3
四月
4
五月
5
六月
6
七月
7
八月
8
九月
9
十月
10
十一月
11
十二月
12
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。
应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。
函数示例
示例
结果
inquarter ('01/25/2013', '01/01/2013', 0)
返回 TRUE
inquarter ('01/25/2013', '04/01/2013', 0)
返回 FALSE
inquarter ('01/25/2013', '01/01/2013', -1)
返回 FALSE
inquarter ('12/25/2012', '01/01/2013', -1)
返回 TRUE
inquarter ('01/25/2013', '03/01/2013', 0, 3)
返回 FALSE
inquarter ('03/25/2013', '03/01/2013', 0, 3)
返回 TRUE
示例 1 – 没有其他参数
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', 0) as in_quarter
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
in_quarter
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
0
4/1/2022
-1
5/7/2022
-1
5/16/2022
-1
6/15/2022
-1
6/26/2022
-1
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
in_quarter 字段是在前置 Load 语句中使用 inquarter() 函数创建的。第一个参数标识正在评估的字段。第二个参数是 5 月 15 日的硬编码日期,用于确定要将哪个季度定义为比较器。为 0 的 period_no 是最后一个参数,它确保 inquarter() 函数不会比较分段四分之一之前或之后的四分之一。
以 5 月 15 日为基准日的 inquarter() 函数的图表
4 月 1 日至 6 月 30 日结束之间发生的任何交易都将返回布尔值结果 TRUE。
示例 2 – period_no
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', -1) as previous_qtr
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
previous_qtr
1/7/2022
-1
1/19/2022
-1
2/5/2022
-1
2/28/2022
-1
3/16/2022
-1
4/1/2022
0
5/7/2022
0
5/16/2022
0
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
将 -1 用作 inquarter() 函数中的 period_no 参数将比较器的边界向后移动四分之一。5 月 15 日属于一年的第二季度,因此该部分最初相当于 4 月 1 日至 6 月 30 日的季度。period_no 将此段抵消负三个月,并导致日期边界变为 1 月 1 日至 3 月 30 日。
以 5 月 15 日为基准日的 inquarter() 函数的图表
因此,1 月 1 日和 3 月 30 日之间发生的任何交易都将返回布尔值结果 TRUE。
示例 3 – first_month_of_year
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
但是在本例中,组织策略是将三月作为财政年度的第一个月。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquarter (date,'05/15/2022', 0, 3) as in_quarter
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
previous_qtr
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
-1
4/1/2022
-1
5/7/2022
-1
5/16/2022
-1
6/15/2022
0
6/26/2022
0
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
在 inquarter() 函数中使用 3 作为 first_month_of_year 参数将 3 月 1 日设置为一年的开始,然后将一年划分为几个季度。因此,季度细分为 3 - 5 月、6 - 8 月、9 - 11 月、12-2 月。5 月 15 日的 base_date 将 3-5 月季度设置为函数的比较季度。
inquarter() 函数的图表,3 月为一年中的第一个月
因此,3 月 1 日至 5 月 31 日之间发生的任何交易都将返回布尔结果 TRUE。
示例 4 – 图表对象示例
加载脚本和图表表达式
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:
创建以下度量以计算交易是否与 5 月 15 日发生在同一季度:
=inquarter(date,'05/15/2022', 0)
结果表
日期
in_quarter
1/7/2022
0
1/19/2022
0
2/5/2022
0
2/28/2022
0
3/16/2022
0
4/1/2022
-1
5/7/2022
-1
5/16/2022
-1
6/15/2022
-1
6/26/2022
-1
7/9/2022
0
7/22/2022
0
7/23/2022
0
7/27/2022
0
8/2/2022
0
8/8/2022
0
8/19/2022
0
9/26/2022
0
10/14/2022
0
10/29/2022
0
通过使用 inquarter() 函数在图表中创建 ‘in_quarter ’ 度量。第一个参数标识正在评估的字段。第二个参数是 5 月 15 日的硬编码日期,用于确定要将哪个季度定义为比较器。为 0 的 period_no 是最后一个参数,它确保 inquarter() 函数不会比较分段四分之一之前或之后的四分之一。
以 5 月 15 日为基准日的 inquarter() 函数的图表
4 月 1 日至 6 月 30 日结束之间发生的任何交易都将返回布尔值结果 TRUE。
示例 5 – 场景
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
现已确定,由于设备错误,2022 年 5 月 15 日所在季度生产的产品存在缺陷。最终用户想要一个图表,按季度名称显示生产的产品“有缺陷”或“无缺陷”的状态以及该季度生产的产品的成本。
加载脚本
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:
=quartername(manufacture_date)
创建以下度量:
=if(only(InQuarter(manufacture_date,makedate(2022,05,15),0)),'Defective','Faultless') ,用于使用 inquarter() 函数识别哪些产品有缺陷,哪些无缺陷:
=sum(cost_price) ,用于显示每个产品的成本总和。
执行以下操作:
将度量的数字格式 设置为金额 。
在外观 下,关闭总计 。
结果表
quartername(manufacture_date)
=if(only(InQuarter(manufacture_date,makedate(2022,05,15),0)),'Defective','Faultless')
Sum(cost_price)
Jan-Mar 2022
Faultless
253.89
Apr-Jun 2022
Defective
351.48
Jul-Sep 2022
Faultless
446.31
Oct-Dec 2022
Faultless
163.91
inquarter() 函数在评估每个产品的制造日期时返回布尔值。对于包含 5 月 15 日所在季度内生产的任何产品,inquarter() 函数返回布尔值 TRUE,并将产品标记为“缺陷”。对于返回 FALSE 值,因此未在该季度生产的任何产品,它将产品标记为“无故障”。