# Last - 图表函数

Last() 返回使用透视表的维度值评估的表达式值，因为维度值显示在透视表的当前行段的最后一列。在除透视表之外的所有图表类型中，此函数会返回 NULL。

信息注释当在图表的任何表达式中使用此图表函数时，不允许对图表中的 y 值进行排序或按表中的表达式列进行排序。因此，这些排序替代项会自动禁用。当您在可视化或表格中使用此图表函数时，可视化的排序将返回到此函数的排序输入。

语法：

Last([TOTAL] expr [, offset [, count]])

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| offset | 指定 offsetn（大于 1）会将表达式评估从最后列开始向左移动 n 列。<br><br>指定偏移量为 0 将计算当前行段最后列上的表达式。<br><br>指定负偏移量数值后，使 Last 函数效果类似于具有相应正偏移量数值的 First 函数。 |
| count | 通过指定第三个参数 count（大于 1），函数将返回一连串值，每个值对应一个从原始单元格开始向左计数的 count 表格列。 |
| TOTAL | 如果表格是单维度或如果将 TOTAL 限定符用作参数，则当前列段数据总是与整列相等。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

如果透视表有多个水平维度，则当前行片断将只包括值与所有维度行中当前列相同的列，除显示字段排序间上一次水平维度的行之外。透视表的水平维度的内部字段排序只需依据从上至下的维度顺序定义。

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Last( Sum(Sales ))` | 返回当前行段最后列 `Sales` 的总和。 |
| `Last( Sum(Sales ), 2)` | 返回当前行段中最后一列左侧两列中 `Sales` 的总和。 |
| `Last( Total Sum( Sales ))` | 返回当前行段最后列 `Sales` 的总计总和。 |
| `RangeAvg (Last(Sum(x),1,5))` | 返回当前行段最右边五列内计算的 `sum(x)` 函数的结果的平均值。 |

## 示例 - Last 基本原理

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/last.htm)

#### 图表表达式

概述

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

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Year`

  * `Quarter`

  * `Sales`

加载脚本

```
Example:
Load * inline [
Year, Quarter, Sales
2023, Q1, 5000
2023, Q2, 4000
2023, Q3, 6000
2023, Q4, 7000
2024, Q1, 4500
2024, Q2, 3250
2024, Q3, 6500
2024, Q4, 7250
];
```

结果

加载数据并打开工作表。创建一个新的透视表，并将此字段添加为行维度：

* `Year`

将此字段添加为列维度：

* `Quarter`

创建以下度量：

* `=Sum(Sales)`，计算销售额的总和。

* `=Last(Sum(Sales))`，计算当前行段最后列的销售额总和。

结果表

| 年 | Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | Last(Sum(Sales)) | Sum(Sales) | Last(Sum(Sales)) | Sum(Sales) | Last(Sum(Sales)) | Sum(Sales) | Last(Sum(Sales)) |  |
| 2023 | 5000 | 7000 | 4000 | 7000 | 6000 | 7000 | 7000 | 7000 |
| 2024 | 4500 | 7250 | 3250 | 7250 | 6500 | 7250 | 7250 | 7250 |

查看结果，您可以看到 `Last` 函数返回每个季度每个行段最后列的销售值之和。例如，在 `Q1` 中，该时段的 `Sum(Sales)` 值为 `5000`。`Q1` 的 `Last(Sum(Sales)` 值是 `7000` ，也就是 `Q4` 中 `Sum(Sales)` 的值，当前行的最后列值 `2023` 。

## 示例 – Last 场景

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/last.htm)

#### 图表表达式

概述

数据集包含三个月内各种产品的销售数据。该公司希望提供当前期间的总销售额以及与该期间上一次（或最近一次）销售额相比的销售额增长。

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

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Date`

  * `Product`

  * `Sales`

加载脚本

```
Example:
Load * inline [
Date, Product, Sales
2024-01-01, Apple, 100
2024-01-01, Banana, 150
2024-01-01, Carrot, 120
2024-02-01, Carrot, 80
2024-02-01, Banana, 200
2024-02-01, Apple, 110
2024-03-01, Carrot, 160
2024-03-01, Banana, 300
2024-03-01, Apple, 150
];
```

结果

加载数据并打开工作表。创建一个新的透视表，并将此字段添加为行维度：

* ` Product
                                       `

将此字段添加为列维度：

* `Date`

创建以下度量：

* `=Sum(Sales)`，计算年销售额。

* `=(Last(Sum(Sales)) - Sum(Sales)) / Sum(Sales)`，计算从当前期间到最近期间的销售额增长。 要将此值显示为百分比，可在数字格式设定下选择数字 &gt; 简单格式 &gt; 12.34%。

结果表

| 产品 | 2024-01-01 | 2024-02-01 | 2024-03-01 |  |  |  |
| --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | (Last(Sum(Sales)) - Sum(Sales)) / Sum(Sales) | Sum(Sales) | (Last(Sum(Sales)) - Sum(Sales)) / Sum(Sales) | Sum(Sales) | (Last(Sum(Sales)) - Sum(Sales)) / Sum(Sales) |  |
| Apple | 100 | 50.00% | 110 | 36.36% | 150 | 0.00% |
| Banana | 150 | 100.00% | 200 | 50.00% | 300 | 0.00% |
| Carrot | 120 | 33.33% | 80 | 100.00% | 160 | 0.00% |

在这个例子中，您可以看到从销售期间开始到最近一个销售期间的销售进展情况。例如，在第一期间 `2024-01-01` 中，`Apple` 的销售额为 `100` ，而相比之下 `2024-03-01` 期间的最新销售数字为 `150`。这表明增长了 `50%`。

## 示例 - 使用 Last 计算预算差异

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/last.htm)

#### 图表表达式

概述

数据集包含两年内按季度划分的预算数据。公司希望提供每个季度的总预算金额以及当前期间的预算金额与当年平均季度预算之间的差异。

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

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Year`

  * `Quarter`

  * `Budget`

加载脚本

```
Example:
Load * inline [
Year, Quarter, Budget
2023, Q1, 1200
2023, Q2, 1100
2023, Q3, 1300
2023, Q4, 1400
2024, Q1, 1550
2024, Q2, 1230
2024, Q3, 1400
2024, Q4, 1600
];
```

结果

加载数据并打开工作表。创建一个新的透视表，并将此字段添加为行维度：

* ` Year
                                       `

将此字段添加为列维度：

* `Quarter`

创建以下度量：

* `=Sum(Budget)`，计算季度的预算。

* `=Sum(Budget) - RangeAvg(Last(Budget, 1, 4))` 计算当前期间的 `Budget` 金额与当年的平均季度预算之间的差异。

结果表

| 年 | Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Budget) | Sum(Budget) - RangeAvg(Last(Budget, 1, 4)) | Sum(Budget) | Sum(Budget) - RangeAvg(Last(Budget, 1, 4)) | Sum(Budget) | Sum(Budget) - RangeAvg(Last(Budget, 1, 4)) | Sum(Budget) | Sum(Budget) - RangeAvg(Last(Budget, 1, 4)) |  |
| 2023 | 1200 | -50 | 1100 | -150 | 1300 | 50 | 1400 | 150 |
| 2024 | 1550 | 105 | 1230 | -215 | 1400 | -45 | 1600 | 155 |

使用 `Last` 函数，您可以看到每个季度的预算金额与平均季度预算相比如何变化。例如，在 `2023` 中，全年预算总额为 `5000` (`1200 + 1100 + 1300 + 1400`)，因此，季度平均预算为 `1250`。由于 `Q1` 的预算额为 `1200` ，与 `1250` 的平均季度预算相比，要低 `50`，而 `Q4` 与平均季度预算的预算差异为 `150`。