# Max - 图表函数

Max() 用于查找聚合数据的最高值。通过指定 rank n，可以查找第 n 个最高值。

提示注释您可能还想查看 FirstSortedValue 和 RangeMax，其功能与 Max 函数相似。

语法：

Max([{SetExpression}] [TOTAL [&lt;fld {,fld}&gt;]] expr [,rank])

返回数据类型： 数字

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| rank | rank 的默认值为 1，相当于最高值。通过指定 rank 为 2，将返回第二个最高值。如果指定 rank 为 3，将返回第三个最高值，以此类推。 |
| SetExpression | 聚合函数会默认聚合选择项定义的可能记录集合。可选记录集合可由集合分析表达式定义。 |
| TOTAL | 如果在函数参数前面出现单词 TOTAL，则计算给出当前选择项的所有可能值，而不只是属于当前维度值的那些值，即它会忽略图表维度。<br><br>通过使用 TOTAL [&lt;fld {.fld}&gt;]（其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表），您可以创建总可能值的子集。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Max(UnitSales)` | 返回 `UnitSales` 字段中的最高值。 |
| `Max(UnitSales*UnitPrice)` 订单的价值是通过将售出的单位数量（按 `UnitSales`）乘以单价来计算的。 | 返回计算 (`UnitSales`) \* (`UnitPrice`) 所有可能值时的结果的最大值。 |
| `Max(UnitSales, 2)` | 返回第二最高值的数值。 |
| `Max(TOTAL UnitSales)` | `TOTAL` 限定符意味着在忽略图表维度的情况下找到的最大值。对于以 `Customer` 为维度的图表，`TOTAL` 限定符将确保返回整个数据集的最大值，而不是每个客户的最大 `UnitSales` 值。 |
| `Max({1} TOTAL UnitSales)` | 集分析表达式 `{1}` 定义了要作为 `ALL` 评估的记录集，与所做任何选择无关。例如，如果选择了特定的客户，它仍会返回整个数据集的最大 `UnitSales` 值。 |

## 示例 - Max 基本原理

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

#### 图表表达式

概述

数据集包含按月分列的产品销售数据。我们想确定每种产品的最大销售价值以及发生这种情况的月份。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Customer`

  * `UnitSales`

  * `UnitPrice`

加载脚本

```
Example:
LOAD * inline [
Customer|UnitSales|UnitPrice
Astrida|4|16
Astrida|10|15
Astrida|9|9
Betacab|5|10
Betacab|2|20
Betacab||25
Canutility|8|15
Canutility||19
] (delimiter is '|');
```

结果

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

* `Customer`

创建以下度量：

* `=Max(UnitSales)`，计算最大 `UnitSales` 值。

* `=Max(UnitSales*UnitPrice)`，在逐行将 `UnitSales` 乘以 `UnitPrice` 之后计算最大值。

* `=Max(UnitSales, 2)`，计算第二高值。

* `=Max(TOTAL UnitSales)`，无论图表维度如何，都计算出最高的总数。

* `=Max({1} TOTAL UnitSales)`，计算忽略所有选择的最高总数。

Results table

| Customer | Max(UnitSales) | Max(UnitSales\*UnitPrice) | Max(UnitSales, 2) | Max(TOTAL UnitSales) | Max({1} TOTAL UnitSales) |
| --- | --- | --- | --- | --- | --- |
| Totals | 10 | 150 | 9 | 10 | 10 |
| Astrida | 10 | 150 | 9 | 10 | 10 |
| Betacab | 5 | 50 | 2 | 10 | 10 |
| Canutility | 8 | 120 | - | 10 | 10 |

在此示例中，请注意以下几点：

* 在第一个度量 (`Max(UnitSales)`) 中，客户 `Astrida` 的 `UnitSales` 的最高值为 `10`。该列中的 `Totals` 单元格返回 `10` ，因为该值也是整个数据集中最高的`UnitSales` 值。

* 在第二个度量 (`Max(UnitSales*UnitPrice)`) 中，`150` 为 `Astrida` 返回。这是将 `UnitSales` 乘以 `UnitPrice` 时，该客户的最高值。此列的 `Totals` 单元格也会返回 `150`，因为这也是整个数据集中的最高计算值。

* 在第三个度量 (`Max(UnitSales, 2)`) 中，客户 `Astrida` 的 `UnitSales` 值为 `9`。该值也是所有三个客户中的第二高值，因此 `Totals` 行也返回 `9` 。

* 第四个度量 (`Max(TOTAL UnitSales)`) 返回值 `10` 。这是独立于客户维度的最高值，因此，所有行返回相同的值。但是，如果选择客户`Betacab` ，表格将只返回该客户的值（本例中为 `5` ，因为这是 `Betacab` 的所有产品中最高的 `UnitSales` 。

* 第五个度量 (`Max({1} TOTAL UnitSales)`) 返回值 `10`，而不管选择了哪个 `Customer`，因为使用了修改后的集合 `{1}`。例如，如果您选择 `Betacab` ，该列将继续返回值 `10` 。

## 示例 - 按月计算最高销售额的 Max 场景

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

#### 图表表达式

概述

数据集包含按月分列的产品销售数据。销售经理希望确定每种产品的最大销售价值以及发生这种情况的月份。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Product`

  * `Sales`

  * `Month`

加载脚本

```
Example:
Load * inline [
Product,Sales,Month
A, 500, 2024-01-01
A, 700, 2024-02-01
A, 600, 2024-03-01
B, 300, 2024-01-01
B, 800, 2024-02-01
B, 450, 2024-03-01
C, 550, 2024-01-01
C, 620, 2024-02-01
C, 710, 2024-03-01
];
```

结果

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

* `Product`

* `Month`

创建以下度量：

* `=If(Sales = Max(TOTAL <Product> Sales), Sales)`，计算每种产品的最高销售额。在度量的属性面板中，选择加载项 &gt; 数据处理。清除包括零值复选框，以清除任何空值。

Results table

| Product | Month | If(Sales = Max(TOTAL &lt;Product&gt; Sales), Sales) |
| --- | --- | --- |
| A | 2024-02-01 | 700 |
| B | 2024-02-01 | 800 |
| C | 2024-03-01 | 710 |

度量结果会返回每种产品的最大销售值以及达到该值的月份。例如，`Product B` 具有 `2024-02-01` 中的最高销售额 (`800`)。

## 了解详情

* [FirstSortedValue - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/firstsortedvalue.htm)
* [RangeMax 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/rangemax.htm)
* [集合分析](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)