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

注意:从版本 2020.4.1 开始,您现在可以在 Tableau ServerTableau Cloud 中创建和编辑流程。除非特别指出,本主题中的内容适用于所有平台。有关在 Web 上制作流程的详细信息,请参见 Tableau Server(链接在新窗口中打开)Tableau Cloud(链接在新窗口中打开) 帮助中的 Web 上的 Tableau Prep

可以使用计算字段,通过数据源中已存在的数据来创建新数据。Tableau Prep 支持的许多计算类型与 Tableau Desktop 相同。有关创建计算的一般信息,请参见 Tableau 中的计算入门指南(链接在新窗口中打开)

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 中使用此功能时,以下要求适用:

  • 不支持 INCLUDEEXCLUDE 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. 在“配置”窗格工具栏中单击“创建计算字段”,或在配置卡或数据网格中单击“更多选项” 菜单,并选择“创建计算字段”>“自定义计算”

    2. 在计算编辑器中,输入计算的名称,并输入表达式。

      例如,若要按城市查找产品平均发货天数,请创建如下所示的计算。

    可视化计算编辑器

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

    1. 在配置卡或结果窗格中,单击“更多选项” 菜单并选择“创建计算字段”>“FIXED LOD”

    2. 在可视化计算编辑器中,执行以下操作:

      • “分组依据”部分,选择要为其计算值的字段。 默认情况下,将添加您在其中选择了“创建计算字段”>“FIXED LOD”菜单选项的字段。单击加号 图标以向计算中添加任何其他字段。这将填充等式的左侧,即 {FIXED [Field1],[Field2] :
      • “计算依据”部分,选择要用于计算新值的字段。 然后选择您的聚合。这将填充等式的右侧,即 Aggregation([Field)}

        字段下方的图形显示值的分布和每个值组合的总计数。根据数据类型,这可以是盒形图、值范围或实际值。

        注意:可用聚合值因分配给字段的数据类型而异。

      • 若要移除字段,请在“分组依据”部分的字段下拉框中右键单击或按住 Ctrl 单击 (MacOS), 然后选择“移除字段”

      • 在左侧窗格中,双击字段标题并输入用于计算的名称。
    3. 单击“完成”以添加新的计算字段。 在“更改”窗格中,您可以看到 Tableau Prep 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。

计算排名或行号

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

{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() 函数。

  • DESCASC(可选):表示降序 (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() }} 不受支持。

支持的分析函数

函数描述结果
RANK()

从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值,则它们共享分配给该值的第一个实例的排名。在计算下一行的排名时,将添加具有相同排名的行数,因此您可能无法获得连续排名值。

示例计算{ORDERBY [Commission] DESC: RANK()}

RANK_DENSE()

从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值,则它们共享分配给该值的第一个实例的排名,但不会跳过任何排名值,因此您会看到连续排名值。

示例计算{ORDERBY [Commission] DESC: RANK_DENSE()}

RANK_MODIFIED()

从 1 开始按升序或降序为每一行分配整数排名。如果行具有相同的值,则它们共享分配给该值的最后一个实例的排名。Rank_Modified 的计算方式为 Rank + (Rank + Number of duplicate rows - 1)

示例计算{ORDERBY [Commission] DESC: RANK_MODIFIED()}

RANK_PERCENTILE()

从 0 到 1 按升序或降序为每一行分配百分比排名。RANK_PERCENTILE 的计算方式为 (Rank-1)/(Total rows-1)

示例计算{ORDERBY [Commission] DESC: RANK_PERCENTILE()}

注意:如果出现平局,Tableau Prep 会向下舍队,类似于 SQL 中的 PERCENT_RANK()。

ROW_NUMBER()

为每个唯一行分配连续的行 ID。不会跳过任何行号值。如果具有重复行并使用此计算,则每次运行流程时,如果行的顺序发生更改,结果可能会发生变化。

示例计算{ORDERBY [Commission] DESC: ROW_NUMBER()}

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

创建排名或行号计算

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

注意:RROW_NUMBER() 计算在可视化计算编辑器中不可用。

计算编辑器

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

  1. 在“配置”窗格工具栏中单击“创建计算字段”,或在配置卡或数据网格中单击“更多选项” 菜单,并选择“创建计算字段”>“自定义计算”

  2. 在计算编辑器中,输入计算的名称,并输入表达式。

    例如,要查找最新的客户订单,请创建如下所示的计算,然后仅保留使用数字 1 排名的客户订单行。

示例:使用 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)中添加行号,然后单击“保存”

  5. 在新的计算字段中,在字段值“1”上右键单击或按住 Cmd 单击 (MacOS),然后从菜单中选择“只保留”

    之前之后

可视化计算编辑器

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

  1. 在配置卡或结果窗格中,单击“更多选项” 菜单并选择“创建计算字段”>“排名”

  2. 在可视化计算编辑器中,执行以下操作:

    • “分组依据”部分,选择包含要为其计算值的行的字段。这将创建计算的 Partition 部分。

      选择第一个字段后,单击加号 图标以将任何其他字段添加到您的计算中。如果要包括所有行或移除所选行,请在“分组依据”部分的字段下拉框中右键单击或按住 Cmd 单击 (MacOS),然后选择“移除字段”

    • “排序依据”部分,选择要用于对新值进行排名的字段。默认情况下,将添加您在其中选择了“创建计算字段”>“排名”菜单选项的字段。

      单击加号 图标以向计算中添加任何其他字段,然后选择“排名”类型。单击排序 图标将排名顺序从降序 (DESC) 更改为升序 (ASC)。

      注意:排名值因分配给字段的数据类型而异。

    • 在左侧窗格中,双击字段标题并输入用于计算的名称。

  3. 单击“完成”以添加新的计算字段。在“更改”窗格中,您可以看到 Tableau Prep Builder 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。

计算分片

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

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

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

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

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

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

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

创建分片计算

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

可视化计算编辑器

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

  1. 选择配置卡以创建分片计算。

  2. 单击“更多”选项菜单,并选择“创建计算字段”>“分片”

    所选的配置卡以 ORDERBY 字段形式添加。

  3. 在可视化计算编辑器中,执行以下操作:

    • 选择所需的分片分组数。“分片”的默认值为 1。

    • “分组依据”部分,选择要针对其各个行计算值的字段。这将创建计算的 PARTITION 部分。对于单个计算,您可以有多个“分组依据”字段。

      单击加号 图标以向计算中添加任何其他字段。如果要包括所有行或移除所选行,请在“分组依据”部分的字段下拉框中右键单击或按住 Cmd 单击 (MacOS),然后选择“移除字段”

    • 在左侧窗格中,双击字段标题并输入用于计算的名称。

    • “排序依据”部分,选择要用于分组和分布新值的字段。您必须至少有一个“排序依据”字段。默认情况下,将添加您在其中选择了“创建计算字段”>“分片”菜单选项的字段。

  4. 若要对结果进行排序,请执行以下操作:

    • 单击任何计算行以筛选所选分组的结果

    • 更改排序依据字段的升序或降序顺序。

  5. 单击“完成”以添加新的计算字段。

  6. “更改”窗格中,您可以看到 Tableau Prep Builder 生成的计算。单击“编辑”打开可视化计算编辑器以进行任何更改。

    以下示例显示了行的四分位数划分。基于四个美国地区创建一个分区,然后将“Sales”(销售额)字段数据均匀地分组到这些分区中。

计算编辑器

  1. 在“配置”窗格工具栏中单击“创建计算字段”,或在配置卡或数据网格中单击“更多选项” 菜单,并选择“创建计算字段”>“自定义计算”

  2. 在计算编辑器中,输入计算的名称,并输入表达式。例如,若要按成绩将学生行分为两组,然后按科目将它们分组,请使用:{PARTITION [Subject]:{ORDERBY [Grade] DESC:NTILE(2)}}

    分片计算包括以下元素: 

    • PARTITION(可选):partition 子句将结果集的行划分为使用了 NTILE() 函数的分区。

    • ORDERBY(必需):ORDER BY 子句定义使用 NTILE() 的每个分区中的行分布。

    • NTILE(必需):NTILE 是将行划分为的整数。

      注意:当所有行都可以被 NTILE 子句划分时,该功能会在一定数量的分区中均匀划分各行。当行数不能被 NTILE 子句划分时,生成的组将划分成不同大小的数据桶。

    • DESCASC(可选):表示降序 (DESC) 或升序 (ASC) 顺序。默认情况下,分片按降序排序,因此无需在表达式中指定此项。如果要更改排序顺序,请向表达式中添加 ASC

  3. 单击“保存”

    生成的字段显示与表中每一行相关联的分片分组(数据桶)分配。

感谢您的反馈!您的反馈已成功提交。谢谢!