知识库

按使用表计算的计算字段对维度进行排序


发布时间: 03 Jun 2014
上次修改日期: 20 Jul 2023

问题

如何按使用表计算的计算字段对维度进行排序。

环境

Tableau Desktop

答案

目前,默认排序选项不支持使用表计算的字段。通常,将表计算的副本作为离散字段导入行功能区的第一个位置并隐藏,可按表计算对视图进行排序。

表计算支持大量自定义,因此所需解决方案因原始视图而异。 以下说明使用 Superstore 示例数据集讲解3 个示例,复杂性不断增加。“Sorting by Table Calc_v2022.1.twbx”工作簿会显示这些说明,本文章的右侧窗格提供下载。

示例 1:按总销售额的百分比,对子类别进行排序

这些说明将从“示例 1:按占总销售的百分比排序”视图开始。附加的工作簿提供了创建“示例 1:按占总销售的百分比排序”视图的说明
  1. 选择“分析”>“创建计算字段”
  2. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
    1. 命名此计算字段。在此示例中,计算字段名为“占总排序顺序的百分比”
    2. 将带有三角形图标的绿色 SUM(Sales) 字段从列功能区拖到计算编辑器。Tableau 将写出快速表计算的公式。
    3. 可选:对于最终视图中的降序,将生成的公式乘以 -1
  3. 右键单击左侧数据窗格中的[占总排序顺序的百分比],然后选择“转换为离散”
  4. 将[占总排序顺序的百分比]拖到行功能区的第一个位置
  5. 右键单击行功能区中的[占总排序顺序的百分比],并取消选中显示标题

示例 2:按最近一年的销售额百分比差异,对子类别进行排序

这些说明将从“示例 2:按 2015 年百分比差异排序”视图开始。附加的工作簿提供了创建“示例 2:按 2015 年百分比差异排序”视图的说明
  1. 选择“分析”>“创建计算字段”
  2. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
    1. 命名此计算字段。在此示例中,计算字段名为“最近一年百分比差异排序顺序”
    2. 编写以下 IF THEN 语句:
      WINDOW_SUM(
          IF LAST() = 0
          THEN 
      
          END
      )

      IF THEN 语句会筛选视图中的最后一列。对于子类别中的每年,WINDOW_SUM() 函数将返回相同的筛选值。
    3. 将带有三角形图标的绿色 SUM(Sales) 字段从标签拖到“THEN”与“END”之间的计算编辑器。Tableau 将写出快速表计算的公式
    4. 可选:对于最终视图中的降序,将整个公式乘以 -1
  3. 右键单击左侧数据窗格中的[最近一年百分比差异排序顺序],然后选择“转换为离散”
  4. 将[最近一年百分比差异排序顺序]拖到行功能区的第一个位置
  5. 右键单击行功能区中的[最近一年百分比差异排序顺序],并取消选中显示标题


示例 3:按用户选择年份的总销售额百分比,对子类别进行排序

这些说明将从“示例 3:按已选项占总数的百分比排序”视图开始。附加的工作簿提供了创建“示例 3:按已选项占总数的百分比排序”视图的说明
  1. 选择“分析”>“创建计算字段”
  2. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
    1. 命名此计算字段。在此示例中,计算字段名为“Year of Order Date”(订单日期的年份)
    2. 在公式字段中,创建一个类似于如下的计算:
      DATEPART('year', [Order Date])
  3. 右键单击左侧数据窗格中的[订单日期的年份],并选择创建 > 参数...
  4. 在“创建参数”对话框中,执行以下操作,并单击“确定”:
    1. 为参数命名。在此示例中,参数名为“选择要排序视图的年份”
    2. 在显示格式下拉列表中,选择“数字(自定义)”,将格式选为 0 个小数位,并取消选中包含千位分隔符 
    3. 选择何时打开工作簿,并在下拉列表中,选择订单日期的年份
  5. 创建名为“总数百分比”的计算字段,并将带有三角形图标的绿色 SUM(Sales) 字段从标签拖到计算编辑器。Tableau 将写出快速表计算的公式
  6. 使用如下公式,创建名为“已选年份占总排序顺序的百分比”的计算字段,例如:
    -1 *
    WINDOW_SUM( 
        IF MIN(YEAR([Order Date])) = [选择要排序视图的年份]
        THEN [占总数的百分比]
        END
    )

    乘以 -1 将使最终视图按降序排序
  7. 右键单击左侧数据窗格中的[已选年份占总排序顺序的百分比],并选择“转换为离散”
  8. 将[已选年份占总排序顺序的百分比]拖到行功能区的第一个位置
  9. 右键单击行功能区中的[已选年份占总排序顺序的百分比],并选择编辑表计算...
  10. 在“表计算”对话框中,执行以下操作并关闭对话框:
    1. 在嵌套计算下拉列表中,选择占总数的百分比
    2. 在计算使用下方,选择表(向下)
      注意:对于[已选年份占总排序顺序的百分比]引用的[占总数的百分比]字段,它的计算方式与视图中的快速表计算不同,因此确保计算总数的百分比必须相同。
  11. 右键单击行功能区中的[已选年份占总排序顺序的百分比],并取消选中显示标题

 

其他信息

最终,目标是创建计算字段,这将返回值,从而对视图进行排序:
  • 示例 1 显示了如何对简单条形图进行排序,其中行功能区仅有 1 个维度。
  • 示例 2 按最后一列中的值,对高亮显示表的每一行进行排序。排序顺序计算必须仅返回 2015 年销售额值的百分比差异;但对于相同行,每年也必须返回 2015 年值。否则,每年将单独排序。
  • 示例 3 也会按特定列中的值对高亮显示图进行排序;但此时,对于视图中的表计算,它的计算方式与创建排序顺序的表计算不同。这需要使用设置,设置高级计算,才可以得到正确结果。

即使视图包含表计算,由维度构成的标题的工具提示也会有排序图标;但是,此选项会基于当前值创建手动排序。当数据更新时,从标题工具提示创建的排序不会更新。

对于使用不同方式计算表计算生成不同的结果,有关此方面的更多信息,请查看使用表计算转换值嵌套表计算
此文章是否已解决问题?