# Bottom - 图表函数

Bottom() 用于评估表格中列段数据最后一（底部）行的表达式。要计算的行取决于 offset 值，如果存在，则默认计算底行。对于除表格以外的图表，用于计算图表的等效垂直表中当前列的最后一行的值。

语法：

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

返回数据类型： 双

参数

| 参数 | 说明 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| offset | 指定 offset n 大于 1 后，将表达式评估向上移到底行上面的 n 行。<br><br>指定负偏移量数值后，使 Bottom 函数效果类似于具有相应正偏移量数值的 Top 函数。 |
| count | 通过指定第三个参数 count 大于 1，函数返回的不是一个值，而是一连串 count 值，每个值对应当前列段数据的最后一个 count 行中的一行。 此时，可以将该函数用作任何特殊范围函数的参数。 [范围函数](https://help.qlik.com/zh-CN/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm) |
| TOTAL | 如果表格是单维度或如果将 TOTAL 限定符用作参数，则当前列段数据总是与整列相等。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

信息注释列段数据是指按当前排序顺序拥有与维度相同的值的连续单元格子集。内部记录图表函数在列段数据中进行计算，不包括等效垂直表图表中的最右侧维度。如果图表中只有一个维度，或者如果已指定 TOTAL 限定符，则计算整个表格中的表达式。

信息注释如果表格或表格等同物有多个垂直维度，当前列段数据将只包括值与所有维度列的当前行相同的行，但按内部字段排序显示最后维度的列除外。

限制：

* 递归调用将返回 NULL 值。

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

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Bottom( Sum(Sales) )` | 返回表中列段的最后（底部）一行的 `Sales` 的值。 |

## 示例 - Bottom 基本原理

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

#### 图表表达式

概览

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Year`

  * `Sales`

加载脚本

```
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];
```

结果

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

* `Year`

创建以下度量：

* `=Sum(Sales)`，用于查找年销售额。

* `=Bottom(Sum(Sales))`，用于查找上一年的销售额值。

* `=Sum(Sales) - Bottom(Sum(Sales))`，用于计算当前年度值与上一年度 `Sales` 值之间的差异。

* `=Sum(Sales)+Bottom(Sum(Sales), 3)`，计算当前年度销售额值和过去第三年值的总和。

* `=(Sales - Bottom(Sales)) / Bottom(Sales)`，用于和去年相比以比率/百分比返回 `Sales` 的变化。 要将此值显示为百分比，可在数字格式设定下选择数字 &gt; 简单格式 &gt; 12.34%。

按升序对表格在维度 `Year` 上进行排序。

结果表

| Year | Sum(Sales) | Bottom(Sum(Sales)) | Sum(Sales) - Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales), 3) | (Sales - Bottom(Sales)) / Bottom(Sales) |
| --- | --- | --- | --- | --- | --- |
| Totals | 7200 | 1700 | 5500 | 8400 | - |
| 2019 | 1000 | 1700 | -700 | 2200 | -41.18% |
| 2020 | 1500 | 1700 | -200 | 2700 | -11.76% |
| 2021 | 1200 | 1700 | -500 | 2400 | -29.41% |
| 2022 | 1800 | 1700 | 100 | 3000 | 5.88% |
| 2023 | 1700 | 1700 | 0 | 2900 | 0.00% |

查看结果后，您可以将当前期间的 `Sales` 值与上一期间或最近期间进行比较。

* `Sum(Sales) - Bottom(Sum(Sales))` 度量值返回 `Sales` 值中的变化，将当前期间与最近期间进行比较。

* `Sum(Sales)+Bottom(Sum(Sales), 3)` 度量返回当前行和最近第三个期间的 `Sales` 总和。

* `(Sales - Bottom(Sales)) / Bottom(Sales)` 度量以百分比形式返回与最近期间相比 `Sales` 的变化。

提示注释此函数也可以用于图表（如条形图），但不能用于表格。

执行以下操作：

创建条形图，然后将此字段添加为维度：

* `Year`

创建以下度量：

* `=Sum(Sales) - Bottom(Sum(Sales))`，用于返回当前期间和最近期间之间的销售差异。

显示 Bottom 函数结果的条形图

显示 Bottom 函数结果的条形图

显示 BottomBottom 函数结果的条形图 ![显示当前期间和上一期间之间销售额差异的条形图。](https://help.qlik.com/zh-CN/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-bottom-example.png)

在条形图中使用 `Bottom` 函数，可以直观地比较当前期间销售额与最近期间销售额之间的差异。

## 示例 – Bottom 场景

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

#### 图表表达式

概览

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `OrderID`

  * `Product`

  * `SalesValue`

  * `OrderDate`

加载脚本

```
Example:
LOAD * INLINE [
OrderID, Product, SalesValue, OrderDate
1, "Product A", 500, '2023-01-10'
2, "Product B", 300, '2023-01-15'
3, "Product C", 450, '2023-02-01'
4, "Product D", 700, '2023-02-20'
5, "Product E", 350, '2023-03-05'
];
```

结果

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

* `Product`

创建以下度量：

* `=RangeAvg (Bottom(Sum(SalesValue),1,3))`，用于返回最近 3 行的平均值。

* `=Sum(SalesValue) - RangeAvg (Bottom(Sum(SalesValue),1,3))`，用于计算当前行与最近 3 行平均值之间的差异。

* `=Sum(SalesValue)`，用于计算当前行的总计 `SalesValue`。

结果表

| Product | RangeAvg (Bottom(Sum(SalesValue),1,3)) | Sum(SalesValue) - RangeAvg (Bottom(Sum(SalesValue),1,3)) | Sum(SalesValue) |
| --- | --- | --- | --- |
| Totals | 500 | 1800 | 2300 |
| 2019 | 500 | 0 | 500 |
| 2020 | 500 | -200 | 300 |
| 2021 | 500 | -50 | 450 |
| 2022 | 500 | 200 | 700 |
| 2023 | 500 | -150 | 350 |

结果显示了如何使用 `RangeSum` 函数和 `Bottom` 函数的组合来分析和比较销售价值。

## 示例 - 使用 Bottom 的图表表达式

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

#### 图表表达式

概览

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

加载脚本包含：

* 两个数据表分别名为 `Monthnames` 和 `Sales2013`。

加载脚本

```
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, MonthNumber
Jan, 1
Feb, 2
Mar, 3
Apr, 4
May, 5
Jun, 6
Jul, 7
Aug, 8
Sep, 9
Oct, 10
Nov, 11
Dec, 12
];

Sales2013:
Crosstable (MonthText, Sales) LOAD * inline [
Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Astrida|46|60|70|13|78|20|45|65|78|12|78|22
Betacab|65|56|22|79|12|56|45|24|32|78|55|15
Canutility|77|68|34|91|24|68|57|36|44|90|67|27
Divadip|57|36|44|90|67|27|57|68|47|90|80|94
] (delimiter is '|'); 
```

结果

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

* `Customer`

创建以下度量：

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

* `=Bottom(Sum(Sales))`，用于显示底部行 `Customer` 的销售额总和。

* `=Sum(Sales)+Bottom(Sum(Sales))`，用于将当前 `Customer` 的 `Sum(Sales)` 值与底部行中的 `Customer` 相加。

* `=Sum(Sales)+Bottom(Sum(Sales), 3)`，用于将当前 `Customer` 的 `Sum(Sales)` 值与从底部行起第三行的 `Customer` 的值相加。

结果表

| Customer | Sum(Sales) | Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales), 3) |
| --- | --- | --- | --- | --- |
| Totals | 2566 | 757 | 3323 | 3105 |
| Astrida | 587 | 757 | 1344 | 1126 |
| Betacab | 539 | 757 | 1296 | 1078 |
| Canutilty | 683 | 757 | 1440 | 1222 |
| Divadip | 757 | 757 | 1514 | 1296 |

度量 `Bottom(Sum(Sales))` 返回所有行的 `757`，因为这是底部行的值：`Divadip`。

对于度量 `Sum(Sales)+Bottom(Sum(Sales))`，行 `Astrida` 返回 `1344`，这是将 `Astrida` 和 `Divadip` 的 `Sum(Sales)` 值，和底部行中 `Customer` 相加的结果。

对于度量 `Sum(Sales)+Bottom(Sum(Sales), 3)`，参数 `offset` 设置为 `3`。该表达式将当前行的 `Sum(Sales)` 值和从底部开始的第三行 `Betacab` 相加。例如，客户`Astrida` 会返回`1126` 的值。这是 `Astrida` 的 `Sum(Sales)` 值和 `Betacab` 的 `SumSales` 相加的结果 (`587`+`539`)。

## 了解详情

* [Top - 图表函数](https://help.qlik.com/zh-CN/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.htm)