# quartername 脚本和图表功能

此函数用于返回一个显示值，该值显示季度的月（根据 MonthNames 脚本变量的格式）以及年，伴随一个与该季度第一天第一毫秒的时间戳对应的基础数值。

语法：

QuarterName(date[, period\_no[, first\_month\_of\_year]])

返回数据类型： 双

`quartername()` 函数的图表

`quartername()` 函数的图表

`quartername()`quartername() 函数的图表 ![显示 quartername 函数如何将输入日期转换为日期所在季度中包含的月份范围的示例图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-quartername-general.png)

`quartername()` 函数确定日期属于哪个季度。然后它返回一个值，显示本季度的开始和结束月份以及年度。此结果的基本数值是季度的第一毫秒。

参数

| 参数 | 描述 |
| --- | --- |
| date | 要评估的日期或时间戳。 |
| period\_no | period\_no 为整数，其中值 0 表示该季度包含 date。period\_no 为负数表示前几季，为正数则表示随后的几季。 |
| first\_month\_of\_year | 如果您不想从一月开始处理（财政）年，可在 first\_month\_of\_year 中指定一个介于 2 和 12 之间的值。 |

## 适合使用 quartername 的情况

当您希望按季度比较聚合时，`quartername()` 函数非常有用。例如，如果您希望按季度查看产品的总销售额。

此函数可在加载脚本中用于在主日历表中创建字段。或者，它可以直接在图表中用作计算维度。

以下示例使用日期格式 MM/DD/YYYY。日期格式已经在数据加载脚本顶部的 `SET DateFormat` 语句中指定。可以根据要求更改示例中的格式。

函数示例

| 示例 | 结果 |
| --- | --- |
| `quartername('10/29/2013')` | 返回 Oct-Dec 2013。 |
| `quartername('10/29/2013', -1)` | 返回 Jul-Sep 2013。 |
| `quartername('10/29/2013', 0, 3)` | 返回 Sep-Nov 2013。 |

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：MM/DD/YYYY。日期格式已经在数据加载脚本中的 `SET DateFormat` 语句中指定。由于区域设置和其他因素，系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者，您可以更改加载脚本中的格式以匹配这些示例。有关更多信息，请参阅[修改应用程序和脚本的区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。

如果你是应用程序创建者，你可以为自己创建的应用程序设置默认区域。有关更多信息，请参阅[设置 Qlik Cloud Analytics 中创建应用程序和脚本所用的首选区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

## 示例 1 – 没有其他参数的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/quartername.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 包含 2022 年交易集的数据集，该数据集加载到名为 `Transactions` 的表中。

* 日期字段已以 `DateFormat` 系统变量 (MM/DD/YYYY) 格式提供。

* 创建一个字段 `transaction_quarter`，该字段返回季度发生前的季度末的时间戳。

根据需要在此处添加其他文本，包括列表等。

加载脚本

```
SET DateFormat='MM/DD/YYYY';
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';

Transactions:
    Load
        *,
        quartername(date) as transaction_quarter
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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`

* `transaction_quarter`

结果表

| 日期 | transaction\_quarter |
| --- | --- |
| 1/7/2022 | Jan-Mar 2022 |
| 1/19/2022 | Jan-Mar 2022 |
| 2/5/2022 | Jan-Mar 2022 |
| 2/28/2022 | Jan-Mar 2022 |
| 3/16/2022 | Jan-Mar 2022 |
| 4/1/2022 | Apr-Jun 2022 |
| 5/7/2022 | Apr-Jun 2022 |
| 5/16/2022 | Apr-Jun 2022 |
| 6/15/2022 | Apr-Jun 2022 |
| 6/26/2022 | Apr-Jun 2022 |
| 7/9/2022 | Jul-Sep 2022 |
| 7/22/2022 | Jul-Sep 2022 |
| 7/23/2022 | Jul-Sep 2022 |
| 7/27/2022 | Jul-Sep 2022 |
| 8/2/2022 | Jul-Sep 2022 |
| 8/8/2022 | Jul-Sep 2022 |
| 8/19/2022 | Jul-Sep 2022 |
| 9/26/2022 | Jul-Sep 2022 |
| 10/14/2022 | Oct-Dec 2022 |
| 10/29/2022 | Oct-Dec 2022 |

通过使用 `quartername()` 函数并将日期字段作为函数的参数传递，在前置 Load 语句中创建了 `transaction_quarter` 字段。

`quartername()` 函数最初标识日期值所在的季度。然后它返回一个值，显示本季度的开始和结束月份以及年度。

`quartername()` 函数图表，示例没有额外参数

`quartername()` 函数图表，示例没有额外参数

`quartername()`quartername() 函数图表，示例没有额外参数 ![显示 quartername 函数如何确定交易发生的季度月份范围的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-quartername-examples-no-add-arg.png)

交易 8203 发生于 2022 年 8 月 8 日。`quartername()` 函数识别交易发生在第三季度，因此返回 2022 年 7 月至 9 月。月份以与 `MonthNames` 系统变量相同的格式显示。

## 示例 2–带 period\_no 参数的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/quartername.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 与第一个示例相同的数据集和场景。

* 创建一个字段 `previous_quarter`，该字段将上一季度返回到交易发生的时间。

加载脚本

```
SET DateFormat='MM/DD/YYYY';
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';

Transactions:
    Load
        *,
        quartername(date,-1) as previous_quarter
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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`

* `previous_quarter`

结果表

| 日期 | previous\_quarter |
| --- | --- |
| 1/7/2022 | Oct-Dec 2021 |
| 1/19/2022 | Oct-Dec 2021 |
| 2/5/2022 | Oct-Dec 2021 |
| 2/28/2022 | Oct-Dec 2021 |
| 3/16/2022 | Oct-Dec 2021 |
| 4/1/2022 | Jan-Mar 2022 |
| 5/7/2022 | Jan-Mar 2022 |
| 5/16/2022 | Jan-Mar 2022 |
| 6/15/2022 | Jan-Mar 2022 |
| 6/26/2022 | Jan-Mar 2022 |
| 7/9/2022 | Apr-Jun 2022 |
| 7/22/2022 | Apr-Jun 2022 |
| 7/23/2022 | Apr-Jun 2022 |
| 7/27/2022 | Apr-Jun 2022 |
| 8/2/2022 | Apr-Jun 2022 |
| 8/8/2022 | Apr-Jun 2022 |
| 8/19/2022 | Apr-Jun 2022 |
| 9/26/2022 | Apr-Jun 2022 |
| 10/14/2022 | Jul-Sep 2022 |
| 10/29/2022 | Jul-Sep 2022 |

在本例中，由于 `quartername()` 函数中使用了为 -1 的 `period_no` 作为偏移参数，因此函数首先识别交易发生在第三季度。然后，它在前一个季度进行移位，并返回一个显示本季度开始和结束月份以及年度的值。

`quartername()` 函数的图表，period\_no 示例

`quartername()` 函数的图表，period\_no 示例

`quartername()`quartername() 函数的图表，period\_no 示例 ![显示 quartername 函数如何确定交易发生的季度月份范围的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-quartername-examples-period-no.png)

交易 8203 发生于 8 月 8 日。`quartername()` 函数确定交易发生前的一个季度是 4 月 1 日至 6 月 30 日。因此它返回 Apr-Jun 2022。

## 示例 3 – 带有 first\_week\_day 参数的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/quartername.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

加载脚本包含与第一个示例相同的数据集和场景。然而，在这个例子中，我们需要将 3 月 1 日定为财政年度的开始。

加载脚本

```
SET DateFormat='MM/DD/YYYY';
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';

Transactions:
    Load
        *,
        quartername(date,0,3) as transaction_quarter
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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`

* `transaction_quarter`

结果表

| 日期 | transaction\_quarter |
| --- | --- |
| 1/7/2022 | Dec-Feb 2021 |
| 1/19/2022 | Dec-Feb 2021 |
| 2/5/2022 | Dec-Feb 2021 |
| 2/28/2022 | Dec-Feb 2021 |
| 3/16/2022 | Mar-May 2022 |
| 4/1/2022 | Mar-May 2022 |
| 5/7/2022 | Mar-May 2022 |
| 5/16/2022 | Mar-May 2022 |
| 6/15/2022 | Jun-Aug 2022 |
| 6/26/2022 | Jun-Aug 2022 |
| 7/9/2022 | Jun-Aug 2022 |
| 7/22/2022 | Jun-Aug 2022 |
| 7/23/2022 | Jun-Aug 2022 |
| 7/27/2022 | Jun-Aug 2022 |
| 8/2/2022 | Jun-Aug 2022 |
| 8/8/2022 | Jun-Aug 2022 |
| 8/19/2022 | Jun-Aug 2022 |
| 9/26/2022 | Sep-Nov 2022 |
| 10/14/2022 | Sep-Nov 2022 |
| 10/29/2022 | Sep-Nov 2022 |

在该例子中，由于 `quartername()` 函数中使用了为 3 的参数 `first_month_of_year`，所以一年的开始时间从 1 月 1 日移动到 3 月 1 日。因此，一年中的季度分为 3 月至 5 月、6 月至 8 月、9 月至 11 月和 12 月 至 2 月。

`quartername()` 函数的图表，first\_week\_day 示例

`quartername()` 函数的图表，first\_week\_day 示例

`quartername()`quartername() 函数的图表，first\_week\_day 示例 ![显示 quartername 函数如何确定交易发生的季度月份范围的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-quartername-examples-first-week-day.png)

交易 8203 发生在 8 月 8 日。`quartername()` 函数确定交易发生在第二季度，即 6 月初至 8 月底。因此它返回 Jun-Aug 2022。

## 示例 4 – 图表对象

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/quartername.htm)

#### 加载脚本和图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

加载脚本包含与第一个示例相同的数据集和场景。

然而，在本例中，未更改的数据集被加载到应用程序中。返回交易发生时季度末的时间戳的计算作为应用程序的图表对象中的度量创建。

加载脚本

```
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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/022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度： date。

创建以下度量：

=quartername(date)

结果表

| 日期 | =quartername(date) |
| --- | --- |
| 1/7/2022 | Jan-Mar 2022 |
| 1/19/2022 | Jan-Mar 2022 |
| 2/5/2022 | Jan-Mar 2022 |
| 2/28/2022 | Jan-Mar 2022 |
| 3/16/2022 | Jan-Mar 2022 |
| 4/1/2022 | Apr-Jun 2022 |
| 5/7/2022 | Apr-Jun 2022 |
| 5/16/2022 | Apr-Jun 2022 |
| 6/15/2022 | Apr-Jun 2022 |
| 6/26/2022 | Apr-Jun 2022 |
| 7/9/2022 | Jul-Sep 2022 |
| 7/22/2022 | Jul-Sep 2022 |
| 7/23/2022 | Jul-Sep 2022 |
| 7/27/2022 | Jul-Sep 2022 |
| 8/2/2022 | Jul-Sep 2022 |
| 8/8/2022 | Jul-Sep 2022 |
| 8/19/2022 | Jul-Sep 2022 |
| 9/26/2022 | Jul-Sep 2022 |
| 10/14/2022 | Oct-Dec 2022 |
| 10/29/2022 | Oct-Dec 2022 |

通过使用 quartername() 函数并将 date 字段作为函数的参数传递，在图表对象中创建 transaction\_quarter 度量。

quartername() 函数最初标识日期值所在的季度。然后它返回一个值，显示本季度的开始和结束月份以及年度。

quartername() 函数的图表，图表对象示例

quartername() 函数的图表，图表对象示例

quartername()quartername() 函数的图表，图表对象示例 ![显示 quartername 函数如何确定交易发生的季度月份范围的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-quartername-examples-chart-object.png)

交易 8203 发生于 2022 年 8 月 8 日。quartername() 函数识别交易发生在第三季度，因此返回 2022 年 7 月至 9 月。月份以与 MonthNames 系统变量相同的格式显示。

## 示例 5 – 场景

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/quartername.htm)

#### 加载脚本和图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 包含 2022 年交易集的数据集，该数据集加载到名为 Transactions 的表中。

* 日期字段已以 DateFormat 系统变量 (MM/DD/YYYY) 格式提供。

最终用户希望得到一个图表对象，该图表对象按季度显示交易的总销售额。即使该维度在数据模型中不可用，也可以使用 quartername() 函数作为图表中的计算维度来实现这点。

加载脚本

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/7/2022',17.17
8189,'1/19/2022',37.23
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. 加载数据并打开工作表。新建表格。

2. 使用以下表达式创建计算维度：

   =quartername(date)

3. 接下来使用以下聚合度量计算总销售额：

   =sum(amount)

4. 将度量的数字格式设置为金额。

结果表

| =quartername(date) | =sum(amount) |
| --- | --- |
| Jul-Sep 2022 | $446.31 |
| Apr-Jun 2022 | $351.48 |
| Jan-Mar 2022 | $253.89 |
| Oct-Dec 2022 | $163.91 |