对数据进行转置(从列到行)

有时,在 Tableau 中分析以交叉表格式存储的数据可能很困难。在处理 Microsoft Excel、文本文件、Google Sheets 和 .pdf 数据源时,您可以对数据进行透视,从交叉表格式转换为分列格式。如果使用其他数据源,您可以使用自定义 SQL 进行透视 (Tableau Desktop)

例如,假设在三个单独的字段中有按季度针对三个供应商销售的设备数量。您可以对数据进行透视,以便供应商位于一个字段中,销售的设备数量位于另一个字段中。

对数据进行透视

设置数据源之后,在网格中选择两个或更多列。单击列名称旁边的下拉箭头,然后选择“行转置为列”。将创建名为“行转置为列字段名称”和行转置为列字段值”的新列并将其添加到数据源。新列将替换您在创建行转置为列时选择的原始列。

添加到行转置为列

若要将更多数据添加到行转置为列,请选择另一个列,单击列名称旁边的下拉箭头,然后选择“将数据添加到行转置为列”。在开始分析之前,请确保行转置为列列和值按预期方式显示。

 

若要移除行转置为列,请单击行转置为列列名称旁边的下拉箭头,然后选择“移除行转置为列”

行转置为列疑难解答

  • 视图中的红色字段以及“数据”窗格中带有感叹号的字段:由于原始字段已替换为新的行转置为列字段,因此对视图中原始字段的任何引用将不再起作用。它们会致字段在视图中变为红色,或在“数据”窗格中的字段旁边显示红色感叹号。

  • 网格中的空值:举例来说,如果在数据提取刷新中移除了行转置为列中使用的所有原始字段,则行转置为列字段中会显示空值。

  • 无行转置为列选项:当您在单一 Microsoft Excel、文本文件、Google Sheets 和 .pdf 数据源中选择两个或更多列时,将出现行转置为列。如果在 Tableau Desktop 中使用其他数据源,您可以使用自定义 SQL 进行透视。

使用自定义 SQL 进行透视 (Tableau Desktop)

即使未使用 Excel、文本文件、Google Sheets 和 .pdf 数据源,您也可以使用自定义 SQL 对数据进行透视。在自定义 SQL 查询中使用 UNION ALL 运算符时,可以获取不同列中的值并将它们放到新列中。

例如,假设您有一个名为 Contest 的表。

Contest

Runner Start Time End Time
Amanda 9/3/2016 3:04 PM 9/3/2016 3:25 PM
Oscar 9/3/2016 3:04 PM 9/3/2016 3:21 PM
William 9/3/2016 3:04 PM 9/3/2016 3:16 PM

若要在 Tableau 中优化此数据的分析,您可以使用下面的自定义 SQL 查询,对“Start Time”和“End Time”列进行透视,使其值在单个列中。

Select [Runner]
, 'Start' as [Action]
, [Start Time] as [Time]
From [Contest]
Union ALL
Select [Runner]
, 'End' as [Action]
, [End Time] as [Time]
From [Contest]

上述自定义 SQL 查询执行以下操作:

  • “Start Time”列标题进行透视,使其转换为一个名为“Start”的字符串值,并将该值添加到一个名为“Action”的新列中。
  • “End Time”列标题进行透视,使其转换为一个名为“End”的字符串值,并将该值添加到一个名为“Action”的新列中。
  • “Start Time”“End Time”列进行透视,使其值在一个名为“Time”的新列中。

下表显示了此自定义 SQL 查询的结果。

Runner Action Time
Amanda

Start

9/3/2016 3:04 PM
Oscar Start 9/3/2016 3:04 PM
William Start 9/3/2016 3:04 PM
Amanda End 9/3/2016 3:25 PM
Oscar End 9/3/2016 3:21 PM
William End 9/3/2016 3:16 PM

 

使用自定义 SQL 进行数据透视

  1. 连接到数据。

  2. 双击左侧窗格中的“新建自定义 SQL”选项。有关详细信息,请参见连接到自定义 SQL 查询

  3. “编辑自定义 SQL”对话框中,复制并粘贴以下自定义 SQL 查询,并将内容替换为关于表的信息:

    Select [Static Column]
    , 'New Value (from Column Header 1)' as [New Column Header]
    , [Pivot Column Values 1] as [New Values]
    From [Table]
    Union ALL
    Select [Static Column]
    , 'New Value (from Column Header 2' as [New Column Header]
    , [Pivot Column Values 2] as [New Values]
    From [Table]
    Union ALL
    Select [Static Column]
    , 'New Value (from Column Header 3' as [New Column Header]
    , [Pivot Column Values 3] as [New Values]
    From [Table]

    如果以下条件为真:

    • Static Column(静态列)Table(表)中列(维度和度量)的逗号分隔列表,不应该包括在行转置为列中。

    • New Value (from Column Header 1-3)(新值(来自列标题 1-3)):您为原始列标题提供的新名称,用作行转置为列中的行值。

    • Pivot Column Values 1-3(行转置为列列值 1-3):需要对其值进行透视以转换成单一列的列。

    • New Column Header(新列标题):为新列提供的名称,此新列包含“New Value (from Column Header 1-3)”(新值(来自列标题 1-3))中的新行值。

    • New Values(新值): 为新列提供的名称,此新列包含“Pivot Column Values 1-3”(行转置为列列值 1-3)中的原始值。

    • Table(表): 连接到的表。

  4. 单击“确定”

感谢您的反馈!