知识库

通过另一个表计算筛选表计算


发布时间: 22 May 2014
上次修改日期: 13 Sep 2023

问题

如何通过另一个表计算筛选表计算。例如,如果原始表计算是每个客户的总销售额百分比,并且只应该对排名前 10 的客户(由排名决定)筛选视图,那么仍然会计算所有客户的总销售额百分比。

环境

Tableau Desktop

答案

使用 IF 语句将表计算筛选器添加到其他表计算的语法中。

附带的示例工作簿使用示例数据集“Superstore”来演示以下指引:
步骤 1:设置视图
  1. 将“[Customer Name]”(客户名称)拖到“行”功能区
  2. 将 [销售额] 拖到“标记”卡上的“文本”
  3. 右键单击“标记”卡上的 [销售额],然后选择“快速表计算”>“总额百分比”
  4. 右键单击“标记”卡上的 [销售额],并选择“计算依据”>“表(向下)”
  5. 选择“分析”>“创建计算字段”
  6. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
    • 命名此计算字段。在此示例中,计算字段名为“销售额排名”
    • 在公式字段中,创建一个类似于如下的计算:
      RANK(SUM([Sales]))
  7. 将 [销售额排名] 拖到“筛选器”功能区
  8. 在筛选器对话框中,选择 1 到 10 的排名,然后单击“确定”。

步骤 2:创建新计算
  1. 打开一个新的计算,并将 [销售额] 从“标记”卡拖到计算编辑器中。Tableau Desktop 将自动为总销售额百分比写出公式,具体如下所示:

    SUM([Sales]) / TOTAL(SUM([Sales]))
     
  2. 用一个 IF 语句封装 SUM([Sales]) 的每个实例,该语句将对 10 以内的排名进行筛选。最终计算可能如下所示:

    IF [Rank of Sales] <= 10
    THEN SUM([Sales])
    END
    /
    WINDOW_SUM(IF [Rank of Sales] <= 10
    THEN SUM([Sales])
    END)



    注意:还需要将表计算 TOTAL() 替换为 WINDOW_SUM(),因为 TOTAL 只适用于聚合,不适用于更复杂的表达式。
     
  3. 将 [销售额] 替换为新的计算
此文章是否已解决问题?