yearname - 脚本和图表函数在该页面上
此函数用于返回一个四位数年份的显示值,带有与包含 date 的年份的第一天的第一毫秒时间戳对应的基本数值。
yearname() 函数的时间范围的图表。
yearname() 函数与 year() 函数不同,因为它允许您偏移要评估的日期,并允许您设置一年中的第一个月。
如果一年的第一个月不是一月,则函数将返回包含日期的十二个月期间的两个四位数年份。例如,如果年初为 4 月,评估日期为 2020 年 6 月 30 日,则返回的结果为 2020-2021 。
yearname() 函数的图表,4 月为一年中的第一个月。
语法:
YearName( date[, period_no[, first_month_of_year] ] )
返回数据类型: 双
date
要评估的日期或时间戳。
period_no
period_no 为整数,其中值 0 表示该年份包含 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
适用场景
yearname() 函数用于按年份比较聚合。例如,如果您想查看每年产品的总销售额。
通过使用函数在主日历表中创建字段,可以在 Load 脚本中创建这些维度。它们也可以在图表中创建为计算尺寸
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。
应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。
函数示例
示例
结果
yearname('10/19/2001')
Returns '2001.'
yearname('10/19/2001',-1)
Returns '2000.'
yearname('10/19/2001',0,4)
Returns '2001-2002.'
示例 1 – 没有其他参数
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
包含 2020 年和 2022 年之间的一组事务的数据集加载到名为 ‘Transactions ’ 的表中。
DateFormat 系统变量,设置为 ‘MM/DD/YYYY ’。
使用 yearname() 并且其被设置为 year_name 字段的前置 Load。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date) as year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
year_name
01/13/2020
2020
02/26/2020
2020
03/27/2020
2020
04/16/2020
2020
05/21/2020
2020
08/14/2020
2020
10/07/2020
2020
12/05/2020
2020
01/22/2021
2021
02/03/2021
2021
03/17/2021
2021
04/23/2021
2021
05/04/2021
2021
06/30/2021
2021
07/26/2021
2021
12/27/2021
2021
06/06/2022
2022
07/18/2022
2022
11/14/2022
2022
12/12/2022
2022
通过使用 yearname() 函数并将日期字段作为函数的参数传递,在前置 Load 语句中创建了 ‘year_name ’ 字段。
yearname() 函数确定日期值属于哪一年,并将其作为四位数的年值返回。
显示 2021 为年份值的 yearname() 函数的图表。
示例 2 – period_no
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
包含 2020 年和 2022 年之间的一组交易的数据集被加载到名为“交易”的表中。
DateFormat 系统变量,设置为 ‘MM/DD/YYYY ’。
使用 yearname() 并且其被设置为 year_name 字段的前置 Load。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date,-1) as prior_year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
prior_year_name
01/13/2020
2019
02/26/2020
2019
03/27/2020
2019
04/16/2020
2019
05/21/2020
2019
08/14/2020
2019
10/07/2020
2019
12/05/2020
2019
01/22/2021
2020
02/03/2021
2020
03/17/2021
2020
04/23/2021
2020
05/04/2021
2020
06/30/2021
2020
07/26/2021
2020
12/27/2021
2020
06/06/2022
2021
07/18/2022
2021
11/14/2022
2021
12/12/2022
2021
由于 yearname() 函数中使用了 -1 的 period_no 作为偏移参数,因此函数首先标识交易发生的年。然后,函数移到前一年并返回结果年。
yearname() 函数的图表,其中 period_no 设置为 -1 .
示例 3 – first_month_of_year
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
yearname(date,0,4) as year_name
;
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
日期
year_name
01/13/2020
2019-2020
02/26/2020
2019-2020
03/27/2020
2019-2020
04/16/2020
2020-2021
05/21/2020
2020-2021
08/14/2020
2020-2021
10/07/2020
2020-2021
12/05/2020
2020-2021
01/22/2021
2020-2021
02/03/2021
2020-2021
03/17/2021
2020-2021
04/23/2021
2021-2022
05/04/2021
2021-2022
06/30/2021
2021-2022
07/26/2021
2021-2022
12/27/2021
2021-2022
06/06/2022
2022-2023
07/18/2022
2022-2023
11/14/2022
2022-2023
12/12/2022
2022-2023
由于yearname() 函数中使用了 4 的 first_month_of_year 参数,因此年初从 1 月 1 日移动到 4 月 1 日。因此,每个 12 个月的周期跨越两个日历年,yearname() 函数返回两个四位数的年份作为评估日期。
交易 8198 发生在 2021 年 3 月 17 日。yearname() 函数将年初设置为 4 月 1 日,结束日期设置为 3 月 30 日。因此,交易 8198 发生在 2020 年 4 月 1 日至 2021 年 3 月 30 日这一年期间。因此,yearname() 函数返回 2020-2021 的值。
yearname() 函数的图表,3 月为一年中的第一个月。
示例 4 – 图表对象
加载脚本和图表表达式
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
但是,返回交易发生年份的字段是作为图表对象中的度量创建的。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:
date
要计算 year_name 字段,请创建此度量:
=yearname(date)
结果表
日期
=yearname(date)
01/13/2020
2020
02/26/2020
2020
03/27/2020
2020
04/16/2020
2020
05/21/2020
2020
08/14/2020
2020
10/07/2020
2020
12/05/2020
2020
01/22/2021
2021
02/03/2021
2021
03/17/2021
2021
04/23/2021
2021
05/04/2021
2021
06/30/2021
2021
07/26/2021
2021
12/27/2021
2021
06/06/2022
2022
07/18/2022
2022
11/14/2022
2022
12/12/2022
2022
通过使用 yearname() 函数并将日期字段作为函数的参数传递,在图表对象中创建了 ‘year_name ’ 度量。
yearname() 函数确定日期值属于哪一年,并将其作为四位数的年值返回。
显示 2021 为年份值的 yearname() 函数的图表。
示例 5 – 场景
加载脚本和图表表达式
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
最终用户希望得到一个图表,该图表按季度显示交易的总销售额。当 yearname() 维度在数据模型中不可用时,使用 yearname() 函数作为计算维度创建此图表。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/13/2020',37.23
8189,'02/26/2020',17.17
8190,'03/27/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'06/06/2022',46.23
8205,'07/18/2022',84.21
8206,'11/14/2022',96.24
8207,'12/12/2022',67.67
];
结果
加载数据并打开工作表。新建表格。
要按年份比较聚合,请创建以下计算维度:
=yearname(date)
创建该度量:
=sum(amount)
将度量的数字格式 设置为金额 。
结果表
yearname(date)
=sum(amount)
2020
$463.55
2021
$457.69
2022
$294.35