---
schema_version: "1"
id: 9f000e9db9132341bc4cfa0d0510959ab34b0d154e3609532816623c166a1521
title: Tableau 中的聚合函数
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/public/desktop/calculations_calculatedfields_aggregate_create.md
canonical_url: https://help.tableau.com/current/public/desktop/zh-cn/calculations_calculatedfields_aggregate_create.htm
source_site: help.tableau.com
content_type: documentation
content_hash: b7322913c33004fff131f9c2b2781b0db628161d0440446961ee81bf9d543c9c
description: Reference of Tableau aggregate functions like AVG, COUNT, and CORR, with an example calculation.
---
[跳转到主要内容](#main-content)

# Tableau 中的聚合函数

本文介绍 Tableau 中的聚合函数及其用途。它还演示如何使用示例创建聚合计算。

## 为何使用聚合函数

聚合函数允许您进行汇总或更改数据的粒度。

例如，您可能想要准确知道您的商店在特定年度有多少订单。您可以使用 COUNTD 函数对您的公司具有的准确唯一订单数进行计数，然后按年对可视化项进行细分。

计算可能如下所示：

`COUNTD(Order ID)`

可视化项可能如下所示：

![](/tableau/current/zh-cn/public/desktop/zh-cn/Img/aggregate_function1.png)

## Tableau 中的可用聚合函数

**聚合和浮点算法**：有些聚合的结果可能并非总是完全符合预期。例如，您可能发现 SUM 函数返回值 -1.42e-14 作为列数，而您知道求和结果应该正好为 0。出现这种情况的原因是电气电子工程师学会 (IEEE) 754 浮点标准要求数字以二进制格式存储，这意味着数字有时会以极高的精度级别舍入。您可以使用 ROUND 函数（请参见[数字函数](https://help.tableau.com/current/public/desktop/zh-cn/functions_functions_number.htm)）或者通过将数字格式设置为显示较少小数位来消除这种潜在误差。

### ATTR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ATTR(expression)</code></td></tr><tr><td>定义</td><td>如果它的所有行都有一个值，则返回该表达式的值。否则返回星号。会忽略 Null 值。</td></tr></tbody></table>

### AVG

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>AVG(expression)</code></td></tr><tr><td>定义</td><td>返回表达式中所有值的平均值。会忽略 Null 值。</td></tr><tr><td>说明</td><td><code>AVG</code> 只能用于数字字段。</td></tr></tbody></table>

### COLLECT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>COLLECT(spatial)</code></td></tr><tr><td>定义</td><td>将参数字段中的值组合在一起的聚合计算。会忽略 Null 值。</td></tr><tr><td>说明</td><td><code>COLLECT</code> 只能用于空间字段。</td></tr></tbody></table>

### CORR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>CORR(expression1, expression2)</code></td></tr><tr><td>输出</td><td>从 -1 到 1 的数字</td></tr><tr><td>定义</td><td>返回两个表达式的皮尔森相关系数。</td></tr><tr><td>示例</td><td><pre>example</pre></td></tr><tr><td>说明</td><td><p>皮尔森相关系数衡量两个变量之间的线性关系。结果范围为 -1 至 +1（包括 -1 和 +1），其中 1 表示精确的正向线性关系，0 表示方差之间没有线性关系，而 −1 表示精确的反向关系。</p><p>CORR 结果的平方等于线性趋势线模型的 R 平方值。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/trendlines_add.htm#Terms" target="_blank">“趋势线模型术语”</a>。</p><p><b>与表范围 LOD 表达式一起使用：</b></p><p>您可以使用 CORR，通过<a href="https://help.tableau.com/current/pro/desktop/zh-cn/calculations_calculatedfields_lod.htm#Table" target="_blank">表范围的详细级别表达式</a>来可视化解聚散点图中的相关性。例如：</p><pre>{CORR(Sales, Profit)}</pre><p>借助详细级别表达式，关联将在所有行上运行。如果您使用像 <code>CORR(Sales, Profit)</code>（不带两边的方括号可使其成为详细级别表达式）这样的公式，视图将显示散点图中每个单独的点与其他每个点（未定义）的关联。</p></td></tr><tr><td>数据库限制</td><td><p><code>CORR</code>适用于以下数据源：Tableau 数据提取、Cloudera Hive、EXASolution、Firebird（版本 3.0 及更高版本）、Google BigQuery、Hortonworks Hadoop Hive、IBM PDA (Netezza)、Oracle、PostgreSQL、Presto、SybaseIQ、Teradata、Vertica。</p><p>对于其他数据源，请考虑提取数据或使用 <code>WINDOW_CORR</code>。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/functions_functions_tablecalculation.htm" target="_blank">“表计算函数”</a>。</p></td></tr></tbody></table>

### COUNT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>COUNT(expression)</code></td></tr><tr><td>定义</td><td>返回项目数。不对 Null 值计数。</td></tr></tbody></table>

### COUNTD

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>COUNTD(expression)</code></td></tr><tr><td>定义</td><td>返回组中不同项目的数量。不对 Null 值计数。</td></tr></tbody></table>

### COVAR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>COVAR(expression1, expression2)</code></td></tr><tr><td>定义</td><td>返回两个表达式的<i>样本</i>协方差。</td></tr><tr><td>说明</td><td><p>协方差对两个变量的共同变化方式进行量化。正协方差指明两个变量趋向于向同一方向移动，平均来说，即一个变量的较大值趋向于与另一个变量的较大值对应。<i>样本协</i>方差使用非空数据点的数量 n - 1 来规范化协方差计算，而不是使用总体协方差（可用于 <code>COVARP</code> 函数）所使用的 n。当数据是用于估算较大总体的协方差的随机样本时，则样本协方差是合适的选择。</p><p>如果 <code>&lt;expression1&gt;</code> 和 <code>&lt;expression2&gt;</code> 相同（例如， <code>COVAR([profit], [profit])</code>），<code>COVAR</code> 将返回一个值，指明值分布的广泛程度。</p><p><code>COVAR(X, X)</code> 的值等于 <code>VAR(X)</code>的值，也等于 <code>STDEV(X)^2</code> 的值。</p></td></tr><tr><td>数据库限制</td><td><p><code>COVAR</code>适用于以下数据源：Tableau 数据提取、Cloudera Hive、EXASolution、Firebird（版本 3.0 及更高版本）、Google BigQuery、Hortonworks Hadoop Hive、IBM PDA (Netezza)、Oracle、PostgreSQL、Presto、SybaseIQ、Teradata、Vertica。</p><p>对于其他数据源，请考虑提取数据或使用 <code>WINDOW_COVAR</code>。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/functions_functions_tablecalculation.htm" target="_blank">“表计算函数”</a>。</p></td></tr></tbody></table>

### COVARP

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>COVARP(expression 1, expression2)</code></td></tr><tr><td>定义</td><td>返回两个表达式的<i>总体</i>协方差。</td></tr><tr><td>说明</td><td><p>协方差对两个变量的共同变化方式进行量化。正协方差指明两个变量趋向于向同一方向移动，平均来说，即一个变量的较大值趋向于与另一个变量的较大值对应。<i>总体协方差</i>等于样本协方差除以 (n-1)/n，其中 n 是非空数据点的总数。如果存在可用于所有相关项的数据，则总体协方差是合适的选择，与之相反，在只有随机项子集的情况下，样本协方差（及 <code>COVAR</code> 函数）较为适合。</p><p>如果 <code>&lt;expression1&gt;</code> 和 <code>&lt;expression2&gt;</code> 相同（例如， <code>COVARP([profit], [profit])</code>），<code>COVARP</code> 将返回一个值，指明值分布的广泛程度。注意：<code>COVARP(X, X)</code> 注意：的值等于 <code>VARP(X)</code>的值，也等于 <code>STDEVP(X)^2</code> 的值。</p></td></tr><tr><td>数据库限制</td><td><p><code>COVARP</code> 适用于以下数据源：Tableau 数据提取、Cloudera Hive、EXASolution、Firebird（版本 3.0 及更高版本）、Google BigQuery、Hortonworks Hadoop Hive、IBM PDA (Netezza)、Oracle、PostgreSQL、Presto、SybaseIQ、Teradata、Vertica</p><p>对于其他数据源，请考虑提取数据或使用 <code>WINDOW_COVAR</code>。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/functions_functions_tablecalculation.htm" target="_blank">“表计算函数”</a>。</p></td></tr></tbody></table>

### MAX

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MAX(expression)</code> 或 <code>MAX(expr1, expr2)</code></td></tr><tr><td>输出</td><td>与参数相同的数据类型，或者，如果参数的任何部分为 null，则为 <code>NULL&nbsp;</code>。</td></tr><tr><td>定义</td><td><p>返回两个参数（必须为相同数据类型）中的最大值。</p><p><code>MAX</code> 也可以聚合形式应用于单个字段。</p></td></tr><tr><td>示例</td><td><pre xml:space="preserve">MAX(4,7) = 7<br>MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021# <br>MAX([Name]) = "Zander"</pre></td></tr><tr><td>说明</td><td><p><b>对于字符串</b></p><p><code>MAX</code> 通常是按字母顺序排在最后的值。</p><p class="note">对于数据库数据源，<code>MAX</code> 字符串值在数据库为该列定义的排序序列中最高。</p><p><b>对于日期</b></p><p>对于日期，<code>MAX</code> 是最近的日期。如果 <code>MAX</code> 是聚合，结果不会有日期层次结构。如果 <code>MAX</code> 是比较，结果将保留日期层次结构。</p><p><b>作为聚合</b></p><p><code>MAX(expression)</code> 是聚合函数，返回单个聚合结果。这在可视化项中显示为 <code>AGG(expression)</code>。</p><p><b>作为比较</b></p><p><code>MAX(expr1, expr2)</code> 比较这两个值并返回一个行级值。</p><p>另请参见 <code><a href="#MIN" class="xref">MIN</a></code>。</p></td></tr></tbody></table>

### MEDIAN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MEDIAN(expression)</code></td></tr><tr><td>定义</td><td>返回表达式在所有记录中的中位数。会忽略 Null 值。</td></tr><tr><td>说明</td><td><code>MEDIAN</code> 只能用于数字字段。</td></tr><tr><td>数据库限制</td><td><p><code>MEDIAN</code> <b>不</b>适用于以下数据源：Access、Amazon Redshift、Cloudera Hadoop、HP Vertica、IBM DB2、IBM PDA (Netezza)、Microsoft SQL Server、MySQL、SAP HANA、Teradata。</p><p>对于其他数据源类型，可以将数据提取到数据提取文件以使用此函数。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/extracting_data.htm" target="_blank">提取数据</a>。</p></td></tr></tbody></table>

### MIN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MIN(expression)</code> 或 <code>MIN(expr1, expr2)</code></td></tr><tr><td>输出</td><td>与参数相同的数据类型，或者，如果参数的任何部分为 null，则为 <code>NULL&nbsp;</code>。</td></tr><tr><td>定义</td><td><p>返回两个参数（必须为相同数据类型）中的最小值。</p><p><code>MIN </code> 也可以聚合形式应用于单个字段。</p></td></tr><tr><td>示例</td><td><pre xml:space="preserve">MIN(4,7) = 4<br>MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#<br>MIN([Name]) = "Abebi"</pre></td></tr><tr><td>说明</td><td><p><b>对于字符串</b></p><p><code>MIN</code> 通常是按字母顺序排列在前面的值。</p><p class="note">对于数据库数据源，<code>MIN</code> 字符串值在数据库为该列定义的排序序列中最低。</p><p><b>对于日期</b></p><p>对于日期，<code>MIN</code> 是最早的日期。如果 <code>MIN</code> 是聚合，结果不会有日期层次结构。如果 <code>MIN</code> 是比较，结果将保留日期层次结构。</p><p><b>作为聚合</b></p><p><code>MIN(expression)</code> 是聚合函数，返回单个聚合结果。这在可视化项中显示为 <code>AGG(expression)</code>。</p><p><b>作为比较</b></p><p><code>MIN(expr1, expr2)</code> 比较这两个值并返回一个行级值。</p><p>另请参见 <code><a href="#MAX" class="xref">MAX</a></code>。</p></td></tr></tbody></table>

### PERCENTILE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>PERCENTILE(expression, number)</code></td></tr><tr><td>定义</td><td>从给定表达式返回与指定 <code>&lt;number&gt;</code> 对应的百分位处的值。<code>&lt;number&gt;</code> 必须介于 0 到 1 之间（含 0 和 1），并且必须是数值常量。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">PERCENTILE([Score], 0.9)</pre></td></tr><tr><td>数据库限制</td><td><p>此函数可用于以下数据源：非旧版 Microsoft Excel 和文本文件连接、数据提取和仅数据提取数据源类型（例如 Google Analytics、OData 或 Salesforce）、Sybase IQ 15.1 及更高版本数据源、Oracle 10 及更高版本的数据源、Cloudera Hive 和 Hortonworks Hadoop Hive 数据源、EXASolution 4.2 及更高版本的数据源。</p><p>对于其他数据源类型，可以将数据提取到数据提取文件以使用此函数。请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/extracting_data.htm" target="_blank">提取数据</a>。</p></td></tr></tbody></table>

### STDEV

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>STDEV(expression)</code></td></tr><tr><td>定义</td><td>基于群体样本返回给定表达式中所有值的统计标准差。</td></tr></tbody></table>

### STDEVP

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>STDEVP(expression)</code></td></tr><tr><td>定义</td><td>基于有偏差群体返回给定表达式中所有值的统计标准差。</td></tr></tbody></table>

### SUM

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>SUM(expression)</code></td></tr><tr><td>定义</td><td>返回表达式中所有值的总计。会忽略 Null 值。</td></tr><tr><td>说明</td><td><code>SUM</code> 只能用于数字字段。</td></tr></tbody></table>

### VAR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>VAR(expression)</code></td></tr><tr><td>定义</td><td>基于群体样本返回给定表达式中所有值的统计方差。</td></tr></tbody></table>

### VARP

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>VARP(expression)</code></td></tr><tr><td>定义</td><td>对整个群体返回给定表达式中所有值的统计方差。</td></tr></tbody></table>

  

## 创建聚合计算

按照下面的步骤进行操作以了解如何创建聚合计算。

1. 在 Tableau Desktop 中，连接到 Tableau 附带的**示例 - 超市**已保存数据源。
2. 导航到工作表，并选择“分析”\>“创建计算字段”。
3. 在打开的计算编辑器中，执行以下操作：
    
    - 将计算字段命名为“Margin”（利润）。
    - 输入以下公式：
        
        `IIF(SUM([Sales]) !=0, SUM([Profit])/SUM([Sales]), 0)`
        
        **注意：**您可以使用函数引用来查找聚合函数和其他函数（如此示例中的逻辑 IIF 函数），并将其添加到计算公式。有关详细信息，请参见[在计算编辑器中使用函数引用](https://help.tableau.com/current/public/desktop/zh-cn/calculations_calculatedfields_tips.htm#functions)。
    - 完成后，单击“确定”。
    
    新的聚合计算将出现在“**数据**”窗格中的“**度量**”下。就像其他字段一样，您可以在一个或多个可视化项中使用该字段。
    
    **注意：**聚合计算始终为度量。
    
    当将“Margin”（利润）放在工作表中的功能区或卡上时，它的名称将更改为“AGG(Margin)”，表示它是聚合计算，并且无法进一步聚合。
    
    ![描述将聚合计算放在功能区上时所发生情况的图形。字段显示 AGG 前缀。](/tableau/current/zh-cn/public/desktop/zh-cn/Img/calc_agg8.png)

## 聚合计算的规则

适用于聚合计算的规则如下：

- 任何聚合计算中不得同时包括聚合值和解聚值。例如，`SUM(Price)*[Items]` 不是有效的表达式，因为 SUM(Price) 已聚合，而 Items 则没有。不过，`SUM(Price*Items)` 和 `SUM(Price)*SUM(Items)` 都有效。
- 表达式中的常量可根据情况充当聚合值或解聚值。例如：例如：`SUM(Price*7)` 和 `SUM(Price)*7` 都是有效表达式。
- 所有函数都可用聚合值进行计算。但是，任何给定函数的参数必须或者全部聚合，或者全部解聚。例如，`MAX(SUM(Sales),Profit)` 不是有效表达式，原因是 Sales 是聚合的，而 Profit 则不是。不过，`MAX(SUM(Sales),SUM(Profit))` 是有效表达式。
- 聚合计算的结果始终为度量。这包括像 ATTR(Dimension) 或 MIN(Dimension) 这样的表达式。
- 与预定义聚合一样，聚合计算可正确地进行总计计算。有关详细信息，请参见“总计”。

## 另请参见

[了解计算：聚合计算](https://help.tableau.com/current/public/desktop/zh-cn/calculations_calculatedfields_understand_types.htm#Aggregate)

[Tableau 中的数据聚合](https://help.tableau.com/current/public/desktop/zh-cn/calculations_aggregation.htm)

[Tableau 中的函数](https://help.tableau.com/current/public/desktop/zh-cn/functions.htm)

[Tableau 函数（按类别）](https://help.tableau.com/current/public/desktop/zh-cn/functions_all_categories.htm)

[Tableau 函数（按字母顺序）](https://help.tableau.com/current/public/desktop/zh-cn/functions_all_alphabetical.htm)