# Bottom - 图表函数

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

语法：

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

返回数据类型： 双

参数：

参数

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

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

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

限制：

* 递归调用将返回 NULL 值。

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

示例和结果：

示例 1 的表格可视化

![Table visualization for Example 1.](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_BottomFunction1.png)

在此示例中显示的表格的屏幕截图中，表格可视化内容通过维度 Customer 和以下度量进行创建：`Sum(Sales)` 和 `Bottom(Sum(Sales))`。

全部行的 Bottom(Sum(Sales)) 列均返回 757，因为此值是底行值：Divadip。

此表格还显示了更复杂的度量：根据 `Sum(Sales)+Bottom(Sum(Sales))` 创建的一个值以及标有 Bottom offset 3 的一个值，后者使用表达式 `Sum(Sales)+Bottom(Sum(Sales), 3)` 创建，且具有设置为 offset 的参数 3。它将当前行的 Sum(Sales) 值添加到从底行开始第三行中的值中，即，当前行加上 Betacab 的值。

示例： 2

在此示例中显示的表格的屏幕截图中，已将更多维度添加到可视化内容中：Month 和 Product。 对于包含多个维度的图表，表达式（包含 Above、Below、Top 和 Bottom 函数）的结果取决于 Qlik Sense 对列维度进行排序的顺序。Qlik Sense 根据最后排序的维度得出的列段数据计数函数的值。可以在排序下的属性面板中控制列排序顺序，并且列不一定按顺序显示在表格中。

在第一个表格中，基于 Month 评估表达式，在第二个表格中，基于 Product 评估表达式。度量 End value 包含表达式 `Bottom(Sum(Sales))`。Month 的底行是 Dec，屏幕截图中所示 Product 的 Dec 的值是 22。（某些行在屏幕截图外编辑，以便节省空间。）

示例 2 的第二个表格。End value 度量的 Bottom 的值基于 Month (Dec)。

![First table for Example 2.](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_BottomFunction3.png)

示例 2 的第二个表格。End value 度量的 Bottom 的值基于 Product（Astrida 的 BB）。

![Second table for Example 2.](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_BottomFunction2.png)

有关更多信息，请参阅 Above 函数中的示例：2。

示例 3

| 示例： 3 | 结果 |
| --- | --- |
| Bottom 函数可用作范围函数的输入。例如：`RangeAvg<br>(Bottom(Sum(Sales),1,3))`。 | 在 Bottom() 函数的参数中，将 offset 设置为 1，并将 count 设置为 3。函数在列段数据中底行上方的行开始的三行上查找表达式 Sum(Sales) 的结果（因为 offset=1），并且列段数据（其中有一行）上方有两行。这三个值用作 RangeAvg() 函数的输入，用于查找所提供的数字范围中的平均值。<br><br>以 Customer 为维度的表格为 RangeAvg() 表达式提供了以下结果。 |
|  | <table> <colgroup><col> <col> </colgroup> <tr> <td> <p> <span>Astrida</span> </p> <p> <span>Betacab</span> </p> <p> <span>Canutility</span> </p> <p> <span>Divadip</span>：</p> </td> <td> <p>659.67</p> <p>659.67</p> <p>659.67</p> <p>659.67</p> </td> </tr>  </table> |

```
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 '|'); 
```

## 了解详情

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