---
schema_version: "1"
id: 2c8550626a5b7e80660d222a92eb6b32db3e78b9cdf27e3780a0e6e78036b78e
title: Tableau 的操作顺序
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/public/desktop/order_of_operations.md
canonical_url: https://help.tableau.com/v0.0/public/desktop/zh-cn/order_of_operations.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 584464e6abedf047bb40462f148246221b4b626d679281db8ff2c0184965944f
description: Understand Tableau's order of operations (query pipeline) for filters and calculations.
---
[跳转到主要内容](#main-content)

# Tableau 的操作顺序

Tableau 中的操作顺序（有时称为查询管道）是指 Tableau 将执行各种动作的顺序。动作也称为操作。许多操作都应用筛选器，这意味着，在您构建视图和添加筛选器时，这些筛选器始终按操作顺序所建立的顺序执行。

**观看视频**：若要查看 Tableau 中演示的相关概念，请观看时长 1 小时的[了解 Tableau 的操作顺序](https://youtu.be/fyDY0_Ivy54)免费演示文稿。

本文包括两个用于更新视图来纠正操作顺序所产生问题的方案：将维度筛选器转换为上下文筛选器，以及将表计算转换为 FIXED 详细级别表达式。

## 关于操作顺序（也称为查询管道）

有时，您可能预计 Tableau 会按一个顺序执行筛选器，但操作的顺序决定的筛选器按不同的顺序执行，则结果可能会出人意料。如果发生这种情况，您有时可以更改操作在管道中执行的顺序。

Tableau 的操作顺序从上到下包括以下各项。

![数据分析中的筛选类型流程图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/order_of_operations_overall.png)

**注意**：在操作顺序中，[最新日期筛选器](https://help.tableau.com/v0.0/public/desktop/zh-cn/filtering.htm#LatestDatePresets)将全局应用于工作簿，而上下文筛选器则按工作簿应用。最新日期在工作簿打开第一次使用、应用数据源筛选器之后但在应用上下文筛选器之前确定。此时日期已设置，并且使用最新日期预设作为维度筛选器。

## 示例 1：将维度筛选器转换为上下文筛选器

本示例以及以下示例使用 Tableau Desktop 附带的“Sample – Superstore”数据源。

在此示例中，视图解决以下问题：按总销售额计，纽约市位居前 10 名的客户有哪些？

视图包含两个维度筛选器，一个您在“筛选器”对话框的“常规”选项卡上创建的筛选器，以及另一个在“前 N 个”选项卡上创建的筛选器。问题在于，这些筛选器是同时执行的，而您希望常规筛选器在“前 N 个”筛选器之前应用，以便“前 N 个”筛选器可对常规筛选器预先筛选的结果进行操作。解决方案是将其中一个筛选器重新定义为上下文筛选器，以便建立清晰的优先级顺序。

下面是用于构建此视图的步骤。

1. 将“Sales”（销售额）拖到“列”。
2. 将“City”（城市）和“\[Customer Name\]”（\[客户名称\]）拖到“行”。
3. 再次从“数据”窗格中拖出“City”（城市），这次将其拖到“筛选器”。在“筛选器”对话框的“常规”选项卡上，将筛选器设置为仅显示单一值：“New York City”（纽约市）。通过单击“无”然后选择“New York City”（纽约市）可达到此目的。
    
    这将创建一个常规维度筛选器。
4. 单击工具栏上的“降序排序”按钮 (![降序排序图标。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/sort_descend.png))。视图现在将如下所示：
    
    ![根据纽约市客户姓名显示销售额的条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations1.png)
    
    注意列表中的前几个名称：Ashbrook、Fuller、Vernon 等。
5. 现在将“\[Customer Name\]”（\[客户名称\]）从“数据”窗格拖到“筛选器”，并创建一个“前 10 个”筛选器，以仅显示按总销售额计的前 10 名客户。
    
    ![带有常规、通配符、条件和顶部选项的筛选器菜单。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations2.png)
    
    应用了这第二个筛选器后，视图看起来是正确的，但您会注意到显示的名称与之前不再相同：
    
    ![按客户名称显示纽约市销售额的条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations3.png)
    
    之前位于第二位的 Peter Fuller 发生了什么情况？目标是显示纽约市的前 10 名客户，但现在视图实际显示的是总体的前 10 名客户。
    
    问题在于“前 N 个”筛选器和常规维度筛选器是同时应用的 — 它们都是维度筛选器，并且按 Tableau 操作顺序出现在同一位置：
    
    ![说明数据分析中各种类型筛选器的流程图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/order_of_operations_filters.png)
    
    解决方案是向上下文中添加（针对“City”（城市）的）常规维度筛选器 — 也就是说，将其转换为一个上下文筛选器，该筛选器将先于在工作表中创建的任何其他筛选器执行。
    
    有关详细信息，请参见[使用上下文筛选器](https://help.tableau.com/v0.0/public/desktop/zh-cn/filtering_context.htm)。
6. 在“筛选器”功能区上右键单击（在 Mac 上按住 Control 单击）“City”（城市），并选择“添加到上下文”。作为上下文筛选器，此筛选器现在优先于维度筛选器，因此视图现在将按预期方式显示：
    
    ![按客户名称显示纽约市销售情况的水平条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations5.png)

## 示例 2：将表计算转换为 FIXED 详细级别表达式

在此示例中，视图解决以下问题：占总销售额的百分比将如何按产品子类列出？

视图包含一个维度筛选器和一个表计算。Tableau 会在执行表计算之前应用维度筛选器。若要反转这些操作的顺序，请使用 FIXED 详细级别表达式来取代表计算。

下面是用于构建此视图的步骤。

1. 在新工作表中，将“Sales”（销售额）拖到“列”。
2. 将“Sub-Category”（子类）拖到“行”。
3. 在“列”上右键单击“SUM(Sales)”并选择快速表计算 –“总额百分比”。
4. 单击工具栏上的“降序排序”按钮 (![降序排序图标。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/sort_descend.png))，按从最多到最少的顺序对类别进行排序。
5. 单击工具栏上的“显示标记标签”按钮 (![“标记”卡上的添加标签图标。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/marklabels.png))，以在视图中显示度量值。
    
    视图现在将如下所示：
    
    ![显示每个子类占总销售额百分比的水平条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations10.png)
    
    注意前几项的百分比：14.37%、14.30% 等。
6. 在“行”上右键单击“Sub-Category”（子类），并选择“显示筛选器”。
7. 清除筛选器中“Chairs”（椅子）的复选标记。
    
    ![带有包含数据复选框的子类列表。有一个子类未选中。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations11.png)
    
    视图中的百分比现在有所不同 — 最高的百分比现在超过了 16%。在某些情况下，这可能就是您需要的结果（也就是说，在使用快速筛选器时对百分比进行重新计算）。但在其他情况下，您可能希望百分比即使在您筛选进或筛选出某些项目时也保持稳定。这是我们在本例中所需要的。
    
    在操作顺序中，维度筛选器是在表计算之前应用的。
    
    ![数据分析中的筛选类型流程图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/order_of_operations_overall.png)
    
    若要让 Tableau 在运用快速筛选器之前计算百分比，您可以创建一个 FIXED 详细级别表达式，然后使用该表达式来取代表计算。
    
    FIXED 详细级别表达式使用指定的维度计算值，而不引用视图中的维度。在本例中，您将使用它来建立各个子类的百分比 — 不会受常规维度筛选器影响的百分比。为何会这样？原因是，FIXED 详细级别表达式是在应用维度筛选器之前计算的。
    
    有关详细信息，请参见[在 Tableau 中创建详细级别表达式](https://help.tableau.com/v0.0/public/desktop/zh-cn/calculations_calculatedfields_lod.htm)。
8. FIXED 详细级别表达式必须将（特定度量值的）“Sales”（销售额）的和除以视图的“Sales”（销售额）的总和。由于分子是聚合的，因此分母也必须为聚合，所以您编写的表达式为：
    
    `SUM([Sales])/SUM({FIXED : SUM([Sales])})`
9. 将该表达式另存为 FixedSumOfSales，然后将其从“数据”窗格拖到“列”，放在使用表计算的现有“SUM(Sales)”字段的右侧。（将两者都保留在视图中以便于比较。）您的视图现在将如下所示：
    
    ![以百分比形式显示子类销售额的条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations12.png)
    
    不管您使用快速筛选器选择或者不选择哪些字段，右侧图表中的百分比现在都保持一致。现在只需设置“FixedSumOfSales”值的格式，以使其显示为百分比。
10. 在“列”中右键单击“FixedSumOfSales”，并选择“设置格式”。在“设置格式”窗格中，选择“数字”，然后选择“百分比”：
    
    ![设置数字格式窗格，具有为科学数字指定小数位的选项。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderofOperations8.png)
    
    这样就得到了最终视图：
    
    ![显示各种子类占总销售额百分比的条形图。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/OrderOfOperations9.png)
    
    当您在“Sub-Category”（子类）快速筛选器中选择或清除项目时，左侧条形图中的百分比将发生变化，而右侧条形图中的百分比则不会。