---
schema_version: "1"
id: 11ef3b447b4f7afb06645dca65319728c54c0a94051aafb42765a865ad0deea7
title: 使用表计算转换值
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/pro/desktop/calculations_tablecalculations.md
canonical_url: https://help.tableau.com/current/pro/desktop/zh-cn/calculations_tablecalculations.htm
source_site: help.tableau.com
content_type: documentation
content_hash: e9bb6138388079d5a113c98f79144fa3ea53009285c5fab0a4a53914d37c760d
description: Transform values with table calculations using addressing and partitioning across the view.
---
[跳转到主要内容](#main-content)

# 使用表计算转换值

本文介绍表计算的基础知识以及如何在 Tableau 中创建表计算。

## 什么是表计算？

  

表计算是应用于可视化项中的值的转换。表计算是特殊类型的计算字段，它用于在 Tableau 中计算本地数据。它们根据当前可视化项中的内容进行计算，并且不考虑从可视化项中筛选出来的任何度量或维度。

您可以将表计算用于各种用途，包括：

- 将值转换为排名
- 转换值以显示汇总
- 转换值以显示总额百分比

对于任何 Tableau 可视化项，都有一个由视图中的维度确定的虚拟表。此表与数据源中的表不同。具体来说，虚拟表由“详细信息级别”内的维度来决定，这意味着由 Tableau 工作表中任何以下工作区或卡上的维度来决定：

![与 LOD 表达式相关的功能区和可视化项部分在空白的 Tableau 仪表板中突出显示。突出显示的区域是页面、列、行、工作表区域以及标记卡中的以下标记：颜色、大小、标签、详细信息和路径。](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/calculations_lod_shelves.png)

## 基础知识：寻址和分区

添加表计算时，您必须使用详细级别的所有维度进行分区（划定范围）或寻址（定向）。

用于定义计算分组方式（执行表计算所针对的数据范围）的维度称为**分区字段**。系统在每个分区内单独执行表计算。

执行表计算所针对的其余维度称为**寻址字段**，可确定计算方向。

分区字段会将视图拆分成多个子视图（或子表），然后将表计算应用于每个此类分区内的标记。计算移动的方向（例如，在计算汇总或计算值之间的差值过程中）由寻址字段来决定。因此，在从上到下对“表计算”对话框的“特定维度”部分中的字段进行排序时，您将通过分区中的各个标记指定计算的移动方向。

当您使用“计算依据”选项添加表计算时，Tableau 会根据您的选择自动将某些维度确定为寻址维度，将其他维度确定为分区维度。但是，在使用特定维度时，则由您来决定哪些维度用于寻址，哪些维度用于分区。

### 表（横穿）

横穿表的长度进行运算，并在每个分区后重新开始。

例如，在下表中，计算将横穿列“(YEAR(Order Date))”针对每一行“(MONTH(Order Date))”进行运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations1.png)

### 表（向下）

沿表的长度向下运算，并在每个分区后重新开始。

例如，在下表中，计算将沿行“(MONTH(Order Date))”针对每一列“(YEAR(Order Date))”向下进行运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations2.png)

### 表（横穿，然后向下）

先横穿表的长度进行运算，然后沿表的长度向下运算。

例如，在下表中，计算将横穿列“(YEAR(Order Date))”，沿行“(MONTH(Order Date))”向下运算，然后再次横穿列针对整个表进行运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations3.png)

### 表（向下，然后横穿）

先沿表的长度向下运算，然后横穿表的长度进行运算。

例如，在下表中，计算将沿行“(MONTH(Order Date))”向下运算，横穿列“(YEAR(Order Date))”，然后再次沿行向下运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations4.png)

### 区（向下）

沿整个区向下运算。

例如，在下表中，计算将沿行“(MONTH(Order Date))”针对单个区向下运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations5.png)

### 区（横穿，然后向下）

先横穿整个区进行运算，然后沿区向下运算。

例如，在下表中，计算将横穿列“(YEAR(Order Date))”针对区的长度进行运算，沿行“(MONTH(Order Date))”向下运算，然后再次横穿列针对整个区的长度进行运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations6.png)

### 区（向下，然后横穿）

先沿整个区向下运算，然后横穿区进行运算。

例如，在下表中，计算沿行“(MONTH(Order Date))”针对区的长度向下运算，横穿列“(YEAR(Order Date))”，然后再次沿区的长度向下运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations7.png)

### 单元格

在单一单元格内运算。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations8.png)

### 特定维度

仅在您指定的维度内运算。

例如，在以下维度可视化项中，“Month of Order Date”（订单日期月份）和“Quarter of Order Date”（订单日期季度）为寻址字段（因为它们已选定），而“Year of Order Date”（订单日期年份）为分区字段（因为该字段未选定）。因此计算将跨一年内的所有季度转换每个月的差异。对于每一年，计算会重新开始。

请注意，如果选择了所有维度，则整个表都在范围中。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations11.png)

#### 所在级别

只有当您在“表计算”对话框中选择“特定维度”时，并且在紧接着“计算依据”选项下面的字段中选择多个维度时，即仅当将多个维度定义为寻址字段时，“所在级别”选项才可用。

使用“计算依据”定义表计算时，此选项不可用，因为这些值按位置建立分区。但是对于“特定维度”，因为可视结构和表计算不一定匹配，所以可以使用“所在级别”选项微调您的计算。

使用此设置根据特定维度在视图中设置断点（也就是计算重启点）。这与仅使用该维度进行分区有何不同？事实上，这是分区，但它是按照位置而不是按照值进行的分区，这是使用“计算依据”选项定义分区的方式。

上面示例中的“所在级别”下拉列表中的可用选项包括：

<table style="width: 100%;mc-table-style: url('Resources/TableStyles/Basic-Border.css');" class="TableStyle-Basic-Border" cellspacing="0"><colgroup><col class="TableStyle-Basic-Border-Column-Column1"><col class="TableStyle-Basic-Border-Column-Column1"></colgroup><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">最深</span></td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">指定应该按最精细级别执行计算。这是默认选项。</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">订单日期季度</span></td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">指定应该按季度级别执行计算。</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1"><span class="uicontrol">订单日期月份</span></td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1"><p>指定应该按月份级别执行计算。</p><p>&nbsp;</p></td></tr></tbody></table>

## 创建表计算

若要了解如何创建表计算，请按照下面示例中的步骤进行操作。若要了解如何创建快速表计算，请参见[快速表计算](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_tablecalculations_quick.htm)。

### 步骤 1：生成可视化项

1. 打开 Tableau 并连接到“**Sample - Superstore**”已保存数据源。
2. 导航到新工作表。
3. 从**“数据”**窗格中，将“Order Date”（订单日期）拖到“行”功能区。维度将更新为**“YEAR(Order Date)”**。
4. 在“行”功能区上，右键单击“YEAR(Order Date)”，并选择“季度”。
5. 在“行”功能区上，单击“QUARTER(Order Date)”上的 + 图标。**“MONTH(Order Date)”**将添加到功能区。
6. 从“**数据**”窗格中的“维度”下，将“Order Date”（订单日期）拖到“列”功能区。维度将再次更新为**“YEAR(Order Date)”**。
7. 从**“数据”**窗格中，将“Sales”（销售额）拖到“标记”卡上的“文本”。

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations10.png)

### 步骤 2：添加表计算

1. 在“标记”卡上，右键单击“SUM(Sales)”，并选择“添加表计算”。
2. 在打开的“表计算”对话框中，执行以下操作：

- 对于“**计算类型**”：选择“差异”。  
    有关可在 Tableau 中使用的表计算类型以及如何配置表计算的详细信息，请参见[表计算类型](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_tablecalculations_definebasic_runningtotal.htm)。
- 对于“**计算依据**”，选择“表(横穿)”。请注意，在您选择计算的运算方式时，可视化项将更新，并显示可视指示符来为您提供指导。  
    有关这些选项的详细信息，请参见[基础知识：寻址和分区](#Basics)部分。
- 完成后，单击“表计算”对话框右上角中的 X 退出该对话框。

计算将应用于可视化项中的值。

#### 检查您的工作！

![](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/table_calculations9.gif)

## 编辑表计算

编辑表计算：

1. 右键单击视图中应用了表计算的度量，并选择“编辑表计算”。
2. 在出现的“表计算”对话框中进行更改。
3. 完成后，单击“表计算”对话框右上角中的 X 退出该对话框。

## 移除表计算

移除表计算：

- 右键单击视图中应用了表计算的度量，并选择“清除表计算”。表计算将被从度量中移除，并且可视化项将更新为包含原始值。

## 另请参见

[表计算](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_calculatedfields_understand_types.htm#Table)

[快速表计算](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_tablecalculations_quick.htm)

[表计算类型](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_tablecalculations_definebasic_runningtotal.htm)

## 此部分中的其他文章