---
schema_version: "1"
id: 4270893484eed5d031b3e1b759d8fef998cd814449ba62a4d7d3356b9f26e3b3
title: 创建详细级别、排名和分片计算
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/prep/prep_calculations.md
canonical_url: https://help.tableau.com/current/prep/zh-cn/prep_calculations.htm
source_site: help.tableau.com
content_type: documentation
content_hash: c6c60a80dc1c9a6cc5f3cdfde65af9ad91f41a3e266a1ee5df6851660c9e4cf1
description: Create level of detail, rank, and tile calculations in Tableau Prep.
---
[跳转到主要内容](#main-content)

# 创建详细级别、排名和分片计算

**注意**：从版本 2020.4.1 开始，您现在可以在 Tableau Server 和 Tableau Cloud 中创建和编辑流程。除非特别指出，本主题中的内容适用于所有平台。有关在 Web 上制作流程的详细信息，请参见 [Tableau Server](https://help.tableau.com/current/server/zh-cn/prep_web_auth.htm) 和 [Tableau Cloud](https://help.tableau.com/current/online/zh-cn/prep_web_auth.htm) 帮助中的 **Web 上的 Tableau Prep**。

可以使用计算字段，通过数据源中已存在的数据来创建新数据。Tableau Prep 支持的许多计算类型与 Tableau Desktop 相同。有关创建计算的一般信息，请参见 [Tableau 中的计算入门指南](https://help.tableau.com/current/pro/desktop/zh-cn/calculations_calculatedfields_create.htm)。

**注意**：创建计算字段时，不要使用保留名称“Number of Records”（记录数）。使用此保留名称将导致与权限相关的错误。

从 Tableau Prep Builder 版本 2020.1.3 开始以及在 Web 上，您可以使用 FIXED 详细级别 (LOD) 以及 RANK and ROW\_NUMBER 分析函数来执行更复杂的计算。

例如，添加 FIXED LOD 计算来更改表中字段的粒度、使用 ROW\_NUMBER() 分析函数快速查找重复行，或使用 RANK() 函数之一来查找具有类似数据的所选行的前 N 个或后 N 个值。如果希望在构建这些类型的表达式时获得更多指引，您可以使用可视化计算编辑器。

从版本 2021.4.1 Tableau Prep Builder 开始以及在 Web 上，您可以使用分片功能将行分布到指定数量的存储桶中。

**注意**：Tableau Desktop 中支持的某些函数在 Tableau Prep 中可能不受支持。若要查看可用于 Tableau Prep 的函数，请查看计算编辑器中的函数列表。

## 计算详细级别

当您需要在同一表中以多个粒度级别计算数据时，可以编写详细级别 (LOD) 表达式来执行此操作。举例来说，如果要查找每个区域的总销售额，可以编写类似于 `{FIXED [Region] : SUM([Sales])}` 的计算。

Tableau Prep 支持 FIXED 详细级别表达式，并使用语法 `{FIXED [Field1],[Field2] : Aggregation([Field)}`。

LOD 表达式有两个用冒号分隔的等式部分。

- **FIXED \[字段\]**（必需）：这是您要为其计算值的一个或多个字段。举例来说，如果要查找客户和区域的总销售额，请输入 `FIXED [Customer ID], [Region]:`。如果未选择任何字段，这相当于执行在冒号右侧定义的聚合，并为每一行重复该值。
- **聚合(\[字段\])**（必需）：选择要计算的内容以及所需的聚合级别。举例来说，如果要查找总销售额，请输入 `SUM([Sales]`。

在 Tableau Prep 中使用此功能时，以下要求适用：

- 不支持 `INCLUDE` 和 `EXCLUDE` LOD 表达式。
- 仅支持在 LOD 表达式内部使用聚合计算。例如，`SUM([Sales])` 将无效，但 `{FIXED [Region] : SUM([Sales])}` 有效。
- 不支持在 LOD 表达式内嵌套表达式。例如，不支持 `{ FIXED [Region] : AVG( [Sales] ) / SUM( [Profit] )}`。
- 不支持将 LOD 表达式与其他表达式结合使用。例如，`[Sales]/{ FIXED [Country / Region]:SUM([Sales])}` 不受支持。

### 创建详细级别 (LOD) 计算

若要创建详细级别计算，可以使用计算编辑器自行编写计算，或者，如果您希望获得更多指引，则可以使用可视化计算编辑器，您可以在其中选择字段，Tableau Prep 将为您编写计算。

#### 计算编辑器

1. 在“配置”窗格工具栏中单击“创建计算字段”，或在配置卡或数据网格中单击“更多选项”![由 3 个点表示的“更多选项”菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_moreoptions_icon.png) 菜单，并选择“创建计算字段”\>“自定义计算”。
    
    ![“更多选项”菜单，包含创建自定义计算的选项。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_lod_rank_menu_tile.png)
2. 在计算编辑器中，输入计算的名称，并输入表达式。
    
    例如，若要按城市查找产品平均发货天数，请创建如下所示的计算。
    
    ![“计算编辑器”对话框，显示用于计算产品平均发货天数的计算语法。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_LOD_expression_example2.png)

#### 可视化计算编辑器

从列表中选择字段，Tableau Prep 将在您进行选择时为您构建计算。结果的预览显示在左侧窗格中，这样您就能够随时查看所选内容的结果。

1. 在配置卡或结果窗格中，单击“更多选项”![由 3 个点表示的“更多选项”菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_moreoptions_icon.png) 菜单并选择“创建计算字段”\>“FIXED LOD”。
    
    ![显示计算字段选项的菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_LOD_visual_menu_tile.png)
2. 在可视化计算编辑器中，执行以下操作：
    
    - 在“分组依据”部分，选择要为其计算值的字段。 默认情况下，将添加您在其中选择了“创建计算字段”\>“FIXED LOD”菜单选项的字段。单击加号 ![带有加号的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addicon.png) 图标以向计算中添加任何其他字段。这将填充等式的左侧，即 `{FIXED [Field1],[Field2] :`。
    - 在“计算依据”部分，选择要用于计算新值的字段。 然后选择您的聚合。这将填充等式的右侧，即 `Aggregation([Field)}`。
        
        字段下方的图形显示值的分布和每个值组合的总计数。根据数据类型，这可以是盒形图、值范围或实际值。
        
        ![带有盒形图的客户销售数据固定 LOD 表。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_LOD_visual.png)
        
        **注意**：可用聚合值因分配给字段的数据类型而异。
    - 若要移除字段，请在“分组依据”部分的字段下拉框中右键单击或按住 Ctrl 单击 (MacOS)， 然后选择“移除字段”。
    - 在左侧窗格中，双击字段标题并输入用于计算的名称。
3. 单击“完成”以添加新的计算字段。 在“更改”窗格中，您可以看到 Tableau Prep 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。
    
    ![“更改”窗格中的“FIXED 详细级别 (LOD)”表达式的语法。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_LOD_changes.png)

## 计算排名或行号

分析函数（有时称为窗口计算）使您能够对整个表或数据集中的所选行（分区）执行计算。例如，在将排名应用于所选行时，可以使用以下计算语法：

`{PARTITION [field]: {ORDERBY [field]: RANK() }}`

- **PARTITION**（可选）：指定要对其执行计算的行。可以指定多个字段，但如果要使用整个表，请省略函数的此部分，Tableau Prep 会将所有行视为分区。例如，`{ORDERBY [Sales] : RANK() }`。
- **ORDERBY**（必需）：指定要用于生成排名序列的一个或多个字段。
- **Rank ()**（必需）：指定要计算的排名类型或 ROW\_NUMBER ()。Tableau Prep 支持 rank()、RANK\_DENSE()、RANK\_MODIFIED()、RANK\_PERCENTILE() 和 ROW\_NUMBER() 函数。
- **DESC** 或 **ASC**（可选）：表示降序 (DESC) 或升序 (ASC) 顺序。 默认情况下，排名按降序排序，因此无需在表达式中指定此项。如果要更改排序顺序，请向表达式中添加 ASC。
    
    也可以在函数中同时包括这两个选项。举例来说，如果要对所选行进行排名，但希望按升序对行进行排序，然后按降序应用排名，则应在表达式中包括这两个选项。例如：`{PARTITION [Country], [State]: {ORDERBY [Sales] ASC,[Customer Name] DESC: RANK() }}`

使用此功能时，以下要求适用：

- 不支持在 RANK () 函数中嵌套表达式。例如，不支持 `[Sales]/{PARTITION [Country]: {ORDERBY [Sales]: RANK() }} / SUM( [Profit] )}`。
- 不支持将 RANK () 函数与其他表达式结合使用。例如，`[Sales]/{PARTITION [Country]: {ORDERBY [Sales]: RANK() }}` 不受支持。

### 支持的分析函数

<table style="width: 100%;" class="simple-table"><colgroup><col><col style="width: 390px;"><col></colgroup><tbody><tr><th><b>函数</b></th><th><b>描述</b></th><th><b>结果</b></th></tr><tr><td>RANK()</td><td><p>从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值，则它们共享分配给该值的第一个实例的排名。在计算下一行的排名时，将添加具有相同排名的行数，因此您可能无法获得连续排名值。</p><p><strong>示例计算</strong>：<code>{ORDERBY [Commission] DESC: RANK()}</code></p></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_rank_example_new.png" alt="一张显示五位销售人员所赚取的销售佣金及其排名的表格。"></td></tr><tr><td>RANK_DENSE()</td><td><p>从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值，则它们共享分配给该值的第一个实例的排名，但不会跳过任何排名值，因此您会看到连续排名值。</p><p><strong>示例计算</strong>：<code>{ORDERBY [Commission] DESC: RANK_DENSE()}</code></p></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_rank_dense_example_new.png" alt="销售人员的表格、他们的佣金金额、他们所覆盖的区域以及他们的密集排名。"></td></tr><tr><td>RANK_MODIFIED()</td><td><p>从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值，则它们共享分配给该值的最后一个实例的排名。Rank_Modified 的计算方式为 <code>Rank  + (Rank + Number of duplicate rows - 1)</code>。</p><p><strong>示例计算</strong>：<code>{ORDERBY [Commission] DESC: RANK_MODIFIED()}</code></p></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_rank_modified_example_new.png" alt="一个表格，使用 RANK_MODIFIED 方法显示五名销售人员所赚取的销售佣金及其排名。"></td></tr><tr><td>RANK_PERCENTILE()</td><td><p>从 0 到 1 按升序或降序为每一行分配百分比排名。RANK_PERCENTILE 的计算方式为 <code>(Rank-1)/(Total  rows-1)</code>。</p><p><strong>示例计算</strong>：<code>{ORDERBY [Commission] DESC: RANK_PERCENTILE()}</code></p><p class="note"><b>注意：</b>如果出现平局，Tableau Prep 会向下舍队，类似于 SQL 中的 PERCENT_RANK()。</p></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_rank_percentile_example_new.png" alt="显示排名百分位数、销售人员、地区和佣金的表格。"></td></tr><tr><td>ROW_NUMBER()</td><td><p>为每个唯一行分配连续的行 ID。不会跳过任何行号值。如果具有重复行并使用此计算，则每次运行流程时，如果行的顺序发生更改，结果可能会发生变化。</p><p><strong>示例计算</strong>：<code>{ORDERBY [Commission] DESC: ROW_NUMBER()}</code></p></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_rank_row_number_example_new.png" alt="显示销售人员、其所在地区以及佣金金额和行号的表格。"></td></tr></tbody></table>

以下示例显示了应用于同一数据集的上述每个函数的比较。

![等级、密集等级、修改等级和等级百分位数的表。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_example_all.png)

### 创建排名或行号计算

若要创建排名或行号计算，可以使用计算编辑器自行编写计算，或者，如果您希望获得更多指引，则可以使用可视化计算编辑器，您可以在其中选择字段，Tableau Prep 将为您编写计算。

**注意**：RROW\_NUMBER() 计算在可视化计算编辑器中不可用。

#### 计算编辑器

使用计算编辑器创建任何支持的 RANK() 或 ROW\_NUMBER() 计算。支持的分析计算列表显示在计算编辑器中“分析”下的“参考”下拉列表中。

1. 在“配置”窗格工具栏中单击“创建计算字段”，或在配置卡或数据网格中单击“更多选项”![由 3 个点表示的“更多选项”菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_moreoptions_icon.png) 菜单，并选择“创建计算字段”\>“自定义计算”。
    
    ![“更多选项”菜单，包含创建自定义计算的选项。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_lod_rank_menu_tile.png)
2. 在计算编辑器中，输入计算的名称，并输入表达式。
    
    例如，要查找最新的客户订单，请创建如下所示的计算，然后仅保留使用数字 1 排名的客户订单行。
    
    ![计算编辑器添加了一个使用 RANK 函数的计算字段“Latest Customer Order”（最新客户订单）。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_example2.png)

**示例**：使用 ROW\_NUMBER 查找和移除重复值。

本示例使用 Tableau Prep Builder 中的 Superstore 示例数据集，使用 ROW\_NUMBER 函数查找和移除字段“Row ID”（行 ID） 的确切重复值。

1. 打开“Sample Superstore”（示例超市）流程。
2. 在“流程”窗格中，对于“输入”步骤“Orders West”（对西部排序），单击“清理”步骤“Rename States”（重命名状态）。
3. 在工具栏中，单击“创建计算字段”。
4. 在计算编辑器中，将新字段命名为“Duplicates”（重复项），并使用 `ROW_NUMBER` 函数，通过 `{PARTITION [Row ID]: {ORDERBY[Row ID]:ROW_NUMBER()}}` 表达式向字段“Row Id”（行 ID）中添加行号，然后单击“保存”。
    
    ![计算编辑器显示使用 ROW\_NUMBER () 函数移除重复值的计算语法。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_calc_row_number.png)
5. 在新的计算字段中，在字段值“1”上右键单击或按住 Cmd 单击 (MacOS)，然后从菜单中选择“只保留”。
    
    ![重复列表中的“只保留”选项。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_ROW_NUM_Example.png)
    
    <table style="width: 100%;" class="simple-table"><colgroup><col style="width: 253px;"><col></colgroup><tbody><tr><th>之前</th><th>之后</th></tr><tr><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_ROW_NUM_example3.png" alt="在计算中使用前的之前的数据表。"></td><td><img src="https://help.tableau.com/current/prep/zh-cn/Img/prep_ROW_NUM_example2.png" alt="计算中之后的数据表。"></td></tr></tbody></table>

#### 可视化计算编辑器

就像创建详细级别计算时一样，您可以使用可视化计算编辑器来生成排名计算。选择要在计算中包括的字段，然后选择要用于对行进行排名的字段，以及要计算的排名类型。结果的预览显示在左侧窗格中，这样您就能够随时查看所选内容的结果。

1. 在配置卡或结果窗格中，单击“更多选项”![由 3 个点表示的“更多选项”菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_moreoptions_icon.png) 菜单并选择“创建计算字段”\>“排名”。
    
    ![“更多选项”菜单显示了排名的“创建计算字段”子菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_visual_nav_tile_r.png)
2. 在可视化计算编辑器中，执行以下操作：
    
    - 在“分组依据”部分，选择包含要为其计算值的行的字段。这将创建计算的 Partition 部分。
        
        选择第一个字段后，单击加号 ![带有加号的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addicon.png) 图标以将任何其他字段添加到您的计算中。如果要包括所有行或移除所选行，请在“分组依据”部分的字段下拉框中右键单击或按住 Cmd 单击 (MacOS)，然后选择“移除字段”。
    - 在“排序依据”部分，选择要用于对新值进行排名的字段。默认情况下，将添加您在其中选择了“创建计算字段”\>“排名”菜单选项的字段。
        
        单击加号 ![带有加号的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addicon.png) 图标以向计算中添加任何其他字段，然后选择“排名”类型。单击排序 ![排序图标。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_visual_order.png) 图标将排名顺序从降序 (DESC) 更改为升序 (ASC)。
        
        **注意**：排名值因分配给字段的数据类型而异。
    - 在左侧窗格中，双击字段标题并输入用于计算的名称。
        
        ![用于计算一组字段的排名的 Visual Calc 编辑器。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_visual_calc_editor.png)
3. 单击“完成”以添加新的计算字段。在“更改”窗格中，您可以看到 Tableau Prep Builder 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。
    
    ![流程中的“更改”窗格，显示了密集排名、排名、排名百分位数、修改的排名和行号的五个计算字段。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_rank_changes_pane.png)

## 计算分片

通过创建计算字段，使用“分片”功能将行分布到指定数量的存储桶中。您选择要作为分布依据的字段，以及要使用的组（分片）的数量。您还可以选择其他字段来创建分区，其中分片的行分布在组中。使用计算编辑器手动输入语法，或使用可视化计算编辑器选择字段，Tableau Prep 会为您编写计算。

举例来说，如果您有几行学生数据并想查看哪些学生在前 50% 和后 50% 中，您可以将数据分组为两个分片。

![一张包含学生及其科目和成绩的表格。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_excel.png)

以下示例显示了学生成绩上半部分和下半部分的两个组。此方法的语法是：

`{ORDERBY [Grade] DESC:NTILE(2)}`

![显示学生姓名、科目和成绩的表格。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_students.png)

您还可以创建一个分区，其中字段的每个值都是一个单独的分区，并将数据划分为每个分区的组。

以下示例显示为“Subject”（科目）字段创建分区。为每个科目创建一个分区，并为“Grade”（成绩）字段创建两个组（分片）。然后将行均匀地分配到三个分区的两个组中。此方法的语法是：

`{PARTITION [Subject]:{ORDERBY [Grade] DESC:NTILE(2)}}`

![表格显示计算结果、学生、科目和成绩。突出显示了科目。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_partition.png)

### 创建分片计算

若要创建分片计算，可以使用计算编辑器自行编写计算，或者，如果您希望获得更多指引，则可以使用可视化计算编辑器，您可以在其中选择字段，Tableau Prep 将为您编写计算。

#### 可视化计算编辑器

当您使用可视化计算编辑器创建分片计算时，结果的预览显示在左侧窗格中。

1. 选择配置卡以创建分片计算。
2. 单击“更多”选项菜单，并选择“创建计算字段”\>“分片”。
    
    ![使用可视化计算编辑器创建分片计算。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_visual_menu.png)
    
    所选的配置卡以 ORDERBY 字段形式添加。
3. 在可视化计算编辑器中，执行以下操作：
    
    - 选择所需的分片分组数。“分片”的默认值为 1。
    - 在“分组依据”部分，选择要针对其各个行计算值的字段。这将创建计算的 `PARTITION` 部分。对于单个计算，您可以有多个“分组依据”字段。
        
        单击加号 ![带有加号的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addicon.png) 图标以向计算中添加任何其他字段。如果要包括所有行或移除所选行，请在“分组依据”部分的字段下拉框中右键单击或按住 Cmd 单击 (MacOS)，然后选择“移除字段”。
    - 在左侧窗格中，双击字段标题并输入用于计算的名称。
    - 在“排序依据”部分，选择要用于分组和分布新值的字段。您必须至少有一个“排序依据”字段。默认情况下，将添加您在其中选择了“创建计算字段”\>“分片”菜单选项的字段。
        
        ![按地区组织的销售数据表。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_visual_create.png)
4. 若要对结果进行排序，请执行以下操作：
    
    - 单击任何计算行以筛选所选分组的结果
    - 更改排序依据字段的升序或降序顺序。
5. 单击“完成”以添加新的计算字段。
6. 在“更改”窗格中，您可以看到 Tableau Prep Builder 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。
    
    以下示例显示了行的四分位数划分。基于四个美国地区创建一个分区，然后将“Sales”（销售额）字段数据均匀地分组到这些分区中。
    
    ![将计算字段保留为分片。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tile_calc.gif)

#### 计算编辑器

1. 在“配置”窗格工具栏中单击“创建计算字段”，或在配置卡或数据网格中单击“更多选项”![由 3 个点表示的“更多选项”菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_moreoptions_icon.png) 菜单，并选择“创建计算字段”\>“自定义计算”。
    
    ![“更多选项”菜单，包含创建自定义计算的选项。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_lod_rank_menu_tile.png)
2. 在计算编辑器中，输入计算的名称，并输入表达式。例如，若要按成绩将学生行分为两组，然后按科目将它们分组，请使用：`{PARTITION [Subject]:{ORDERBY [Grade] DESC:NTILE(2)}}` 。
    
    ![用于添加计算字段的表单，其中带有列出计算选项的下拉菜单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_tiles_calc_menu.png)
    
    分片计算包括以下元素： 
    
    - **PARTITION**（可选）：partition 子句将结果集的行划分为使用了 NTILE() 函数的分区。
    - **ORDERBY**（必需）：ORDER BY 子句定义使用 NTILE() 的每个分区中的行分布。
    - **NTILE**（必需）：NTILE 是将行划分为的整数。
        
        **注意**：当所有行都可以被 NTILE 子句划分时，该功能会在一定数量的分区中均匀划分各行。当行数不能被 NTILE 子句划分时，生成的组将划分成不同大小的数据桶。
    - **DESC** 或 **ASC**（可选）：表示降序 (DESC) 或升序 (ASC) 顺序。默认情况下，分片按降序排序，因此无需在表达式中指定此项。如果要更改排序顺序，请向表达式中添加 ASC。
3. 单击“保存”。
    
    生成的字段显示与表中每一行相关联的分片分组（数据桶）分配。