知识库

在每一行都是度量时向交叉表中添加其他列


发布时间: 11 Oct 2016
上次修改日期: 20 Jul 2023

问题

如何向包含多个度量的交叉表中添加其他列,也就是每行都是一个度量。

例如,原始交叉表可能有过去两年的两列,目标是添加一个差异列。

环境

  • Tableau Desktop

答案

数据集的大小和结构、显示的所有数据是否具有相同的数字格式以及正在构建的特定视图都将影响所需的确切解决方案。附带的工作簿中演示了下面所有选项。请注意,每种解决方案都有其局限性。
 
单击以展开解决方案
选项 1:添加和自定义总计列
 
注意:使用此方法只能向视图中添加一个额外的列,并且视图中的每个度量都必须替换为计算字段。
  1. 导航到“分析”>“合计”,然后选中“显示行总计”
  2. 使用类似于如下的计算创建一个名称类似于“Sales or Difference”(销售额或差异)的计算字段:
    IF SIZE() > 1
    THEN SUM([Sales])
    ELSE
        SUM(
            IF YEAR([Order Date]) = 2015
            THEN [Sales]
            END
        )
        -
        SUM(
            IF YEAR([Order Date]) = 2014
            THEN [Sales]
            END
        )
    END
  3. “度量值”卡上将“[Sales]”(销售额)替换为“[Sales or Difference]”(销售额或差异)
  4. 为视图中的每个度量重复步骤 2-3
  5. 可选: 设置总计列的格式
    1. 右键单击视图中的“Grand Total”(总计),并选择“设置格式...”
    2. 导航到“格式设置”>“字体...”
    3. 在左侧的“设置字体格式”窗格中,为“Grand Total”(总计)从窗格下拉列表中“Tableau Book”
    4. 在“设置字体格式”窗格顶部的“字段”下拉列表中,选择“Year(Order Date)”
    5. 对于“Grand Total”(总计),在“标签”框中输入所需的列名称。在本例中,我将“Total Total”(总计)重命名为“Difference”(差异)
    6. 单击“边框”图标,它看起来像一个正方形网格
    7. 对于“Total”(合计),为“窗格”和“标题”均选择“无”
    8. 单击“格式设置”窗格右上角的 x 将其关闭
 
单击以展开解决方案
选项 2:覆盖未使用的日期以创建额外的列
 
注意: 同一行中的所有数字必须具有相同的数字格式,并且视图中的每个度量都必须替换为计算字段。
 
  1. 选择“分析”>“创建计算字段”
  2. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”
    • 命名此计算字段。在此示例中,计算字段名为“Column Headers”(列标题)
    • 在公式字段中,创建一个类似于如下的计算:
       
      If YEAR([Order Date]) <= 2015
      AND YEAR([Order Date]) >= 2014
      THEN STR(YEAR([Order Date]))
      ELSEIF YEAR([Order Date]) = 2013
      THEN "Difference"
      ELSE "% Difference"
      END
  3. “列”功能区上的“YEAR(Order Date)”替换为“[Column Headers]”(列标题)
  4. “筛选器”功能区中移除“[Order Date]”(订单日期)
  5. 使用类似于如下的计算创建一个名称类似于“New Sales”(新销售额)的计算字段:
     
    If YEAR(MIN([Order Date])) <= 2015
    AND YEAR(MIN([Order Date])) >= 2014
    THEN SUM([Sales])
    ELSEIF YEAR(MIN([Order Date])) = 2013
    THEN LOOKUP(ZN(SUM([Sales])), -1) - LOOKUP(ZN(SUM([Sales])), -2)
    ELSE (LOOKUP(ZN(SUM([Sales])), -1) - LOOKUP(ZN(SUM([Sales])), -2)) / ABS(LOOKUP(ZN(SUM([Sales])), -2))
    END
  6. 在“度量值”卡上将“[Sales]”(销售额)替换为“[New Sales]”(新销售额)
  7. 为要包括在视图中的所有度量重复步骤 4-5
  8. 在视图中右键单击“Column Headers”(列标题),并选择“隐藏字段标签”
单击以展开解决方案
选项 3:转置度量
注意: 同一列中的所有数字值必须具有相同的数字格式。转置度量可能会导致创建其他视图时出现问题。如果使用此方法,请考虑仅为此视图建立数据源。

转置所有期望的度量
 
对于某些数据源,可以在 Tableau Desktop 中转置数据。有关指引,请参见快速开始:数据进行转置(从列到行)。对于所有其他数据源,必须转置数据源本身中的数据。
 
为最终视图中的每列创建计算字段

选择“分析”>“创建计算字段”
  1. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”
    • 命名此计算字段。在此示例中,计算字段名为“2014 Values”(2014 年值)
    • 在公式字段中,创建一个类似于如下的计算:

      IF YEAR([Order Date]) = 2014

      THEN [Pivot Field Values]

      END

  2. 使用类似于如下的计算创建一个名称类似于“2015 Values”(2015 年值)的计算字段:

    IF YEAR([Order Date]) = 2015 THEN [Pivot Field Values] END

  3. 使用类似于以下的计算创建一个名称类似于“Difference”(差异)的计算字段:

    SUM([2015 Values ]) - SUM([2014 Values])

  4. 使用类似于如下的计算创建一个名称类似于“% Difference”(差异百分比)的计算字段:

    ( SUM([2015 Values ]) - SUM([2014 Values]) ) / SUM([2015 Values ])


生成视图
  1. 将“[Pivot Field Names]”(转置字段名称)拖到“行”功能区。

  2. 将“[2014 Values]”(2014 年值)拖到“标记”卡上的“文本”。

  3. 双击每个计算字段以将其添加到视图。

  4. 在视图中右键单击“Pivot Field Names”(转置字段名称),并选择“隐藏行字段标签”。

单击以展开解决方案
选项 4:为每个列创建单独的工作表,并在一个仪表板上合并
 
注意:如果有足够的行需要滚动条,工作表将在仪表板上独立滚动。此外,仪表板上的格式设置可能会很棘手。但是,此方法允许行和列具有不同的数字格式,对附加列数没有限制,并且只需要最少的计算字段。

格式设置提示:
  • 将仪表板设置为受众屏幕的分辨率

  • 隐藏除添加到视图的第一个工作表之外的所有工作表的标题

  • 右键单击“[Measure Names]”(度量名称),并取消选中“显示标题”

  • 使用文本对象添加列标题

  • 将所有工作表设置为适合宽度

  • 使用空白对象在需要的位置添加空间

  • 在 Tableau Desktop 10.4+ 中,将所有工作表的“布局”窗格上的边距设置为 0

     

其他信息

Tableau Desktop 旨在创建利用数据基础结构的视图,以帮助受众一目了然地了解数据关系。因此,另一种可视化项可能更适合呈现数据。

考虑以下一些建议来创建视图,帮助您的观众快速找到趋势并回答问题:
  • 将所有度量添加到“度量值”卡,并使用颜色对度量进行分组。
  • 将其他列中的信息添加到工具提示
  • 创建突出显示表
此文章是否已解决问题?