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

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

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

注意:创建计算字段时,不要使用保留名称“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 中使用此功能时,以下要求适用:

  • 不支持 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. 单击“保存”

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

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