全部展开/折叠
inquartertodate - 脚本和图表函数在该页面上
此函数用于返回 True ,如果 timestamp 位于包含 base_date 为止以及包括 base_date 最后毫秒的季度部分以内。
语法:
InQuarterToDate
( timestamp, base_date, period_no [, first_month_of_year] )
返回数据类型: 布尔值
信息注释
在 Qlik Sense 中,布尔 true 值由 -1 表示,false 值由 0 表示。
InquarteTodate 函数图表
inquartertodate() 函数将一年分为四个相等的季度,即 1 月 1 日至 12 月 31 日(或用户定义的年初及其相应的结束日期)。使用 base_date ,该函数将对特定的季度进行分段,同时 base_date 识别该季度分段的哪个季度和允许的最大日期。最后,当将规定的日期值与该段进行比较时,该函数返回布尔值结果。
参数
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 之间的值。
适合使用 inquartertodate 的情况 inquartertodate() 函数返回布尔值结果。通常,这种类型的函数将用作 if 表达式中的条件。inquartertodate() 函数将用于返回一个聚合 或计算,这取决于评估日期是否发生在该日期之前的季度。
例如,inquartertodate() 函数可用于识别截至特定日期的一个季度内制造的所有设备。
函数示例 inquartertodate('01/25/2013', '03/25/2013', 0) 返回 TRUE ,由于 timestamp 的值,01/25/2013,其在 01/01/2013 至 03/25/2013 的三个月内 ,其中有 base_date 的值 , 03/25/2013。 inquartertodate('04/26/2013', '03/25/2013', 0) 返回 FALSE ,因为 04/26/2013 在与前一示例相同的时间段之外。 inquartertodate('02/25/2013', '06/09/2013', -1) 返回 TRUE ,因为 period_no 的值 -1 将搜索期间切换回三个月长度(一年的一个季度)的期间。这让搜索期间为 01/01/2013 至 03/09/2013. inquartertodate('03/25/2006', '04/15/2006', 0, 2) 返回 TRUE ,因为 first_month_of_year 的值设置为 2,这让搜索期间为 02/01/2006 至 04/15/2006 而非 04/01/2006 至 04/15/2006。
区域设置 除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。有关详细信息,请参阅修改应用程序和脚本的区域设置 。
应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。
如果你是应用程序创建者,你可以为自己创建的应用程序设置默认区域。有关更多信息,请参阅设置 Qlik Cloud Analytics 中创建应用程序和脚本所用的首选区域设置 。
示例 1 – 没有其他参数 加载脚本和结果 概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
包含 2022 年交易集的数据集 ,该数据集加载到名为 Transactions 的表中。
日期字段 已以 DateFormat 系统变量 (MM/DD/YYYY) 格式提供。
创建一个字段 in_quarter_to_date ,用于确定截至 2022 年 5 月 15 日的季度内发生了哪些交易。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', 0) as in_quarter_to_date
;
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
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 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 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
in_quarter_to_date 字段是在前置 Load 语句 中使用 inquartertodate() 函数创建的。提供的第一个参数标识正在评估的字段。第二个参数是 5 月 15 日的硬编码日期,它是标识要分段的季度的 base_date 并定义该分段的结束边界。为 0 的 period_no 是最后一个参数,这意味着该函数不比较分段季度之前或之后的季度。
InquarteTodate 函数图表,没有额外参数
4 月 1 日至 5 月 15 日之间发生的任何交易都将返回布尔结果 TRUE 。5 月 16 日及之后的交易日期将返回 FALSE ,4 月 1 日之前的任何交易也将返回。
示例 2 – period_no 加载脚本和结果 概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', -1) as previous_qtr_to_date
;
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
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 1/7/2022 -1 1/19/2022 -1 2/5/2022 -1 2/28/2022 0 3/16/2022 0 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 的 period_no 指示 inquartertodate () 函数将输入季度段与前一季度进行比较。5 月 15 日属于一年的第二季度,因此该部分最初等于 4 月 1 日至 5 月 15 之间。然后 period_no 将该段提前三个月偏移,导致日期边界变为 1 月 1 日至 2 月 15 日。
InquarteTodate 函数 period_no 示例的图表
因此,1 月 1 日至 2 月 15 日之间发生的任何交易都将返回布尔值结果 TRUE 。
示例 3 – first_month_of_year 加载脚本和结果 概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
在本例中,我们将 3 月设置为会计年度的第一个月。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inquartertodate(date,'05/15/2022', 0,3) as in_quarter_to_date
;
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
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 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 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
通过在 inquartertodate() 函数中使用 3 作为 first_month_of_year 参数,函数从 3 月 1 日开始一年,然后将一年分成四个季度。因此,四分之一部分为:
然后,为 5 月 15 日的 base_date 通过将其结束边界设置为 5 月 15 号,细分 3 月至 5 月季度。
InquarteTodate 函数 first_month_of_year 示例的图表
因此,在 3 月 1 日和 5 月 15 日之间发生的任何交易将返回布尔结果 TRUE ,而日期在这些边界之外的交易将返回值 FALSE 。
示例 4 – 图表对象 加载脚本和图表表达式 概览
打开数据加载编辑器 ,并将下面的加载脚本 添加到新选项卡。
加载脚本包含与第一个示例相同的数据集和场景。然而,在本例中,未更改的数据集被加载到应用程序中。确定与 5 月 15 日在同一季度发生的交易的计算将作为图表对象中的度量 创建。
加载脚本
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
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:date 。
创建以下度量:
=inquartertodate(date,'05/15/2022', 0)
结果表 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 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
通过使用 inquartertodate() 函数在图表对象中创建 in_quarter_to_date 度量。第一个参数是要计算的日期字段。第二个参数是 5 月 15 日的硬编码日期,它是标识要分段的季度的 base_date 并定义该分段的结束边界。为 0 的 period_no 是最后一个参数,这意味着该函数不比较分段季度之前或之后的季度。
InquarteTodate 函数的图表,图表对象示例
4 月 1 日至 5 月 15 日之间发生的任何交易都将返回布尔结果 TRUE 。5 月 16 日及之后的交易日期将返回 FALSE ,4 月 1 日之前的任何交易也将返回。
示例 5 – 场景 加载脚本和图表表达式 概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
加载到名为 Products 的表中的数据集。
有关产品 ID、制造日期和成本价格的信息。
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(inquartertodate(manufacture_date,makedate(2022,05,15),0),'Defective','Faultless')
创建一个度量来求对产品的 cost_price 求和:
=sum(cost_price)
将度量的数字格式 设置为金额 。
结果表 Jan-Mar 2022 Faultless $253.89 Apr-Jun 2022 Faultless $229.03 Apr-Jun 2022 Defective $122.45 Jul-Sep 2022 Faultless $446.31 Oct-Dec 2022 Faultless $163.91
inquartertodate() 函数在评估每个产品的制造日期时返回布尔值。对于返回布尔值 TRUE 的产品,它将产品标记为 ‘Defective’ 。对于返回值为 FALSE 的任何产品,因此在截至 5 月 15 日(含)的季度内未生产,其将产品标记为 ‘Faultless’ 。