Pivot Data from Columns to Rows

Sometimes, analyzing data that is stored in a crosstab format can be difficult in Tableau. When working with Microsoft Excel, text file, Google Sheets, and .pdf data sources, you can pivot your data from crosstab format into columnar format. If you are working with other data sources, you can Pivot using custom SQL (Tableau Desktop).

For example, suppose you have the number of devices sold by quarter for three vendors in three separate fields. You can pivot your data so that the vendor is in one field and the number of devices sold is in another field.

Pivot the data

After you have set up the data source, in the grid, select two or more columns. Click the drop-down arrow next to the column name, and then select Pivot. New columns called "Pivot field names" and "Pivot field values" are created and added to the data source. The new columns replace the original columns that you selected to create the pivot.

Add to the pivot

To add more data to the pivot, select another column, click the drop-down arrow next to the column name, and then select Add Data to Pivot. Make sure that the pivot columns and values look as expected before you begin your analysis.

 

To remove a pivot, click the drop-down arrow next to the name of a pivot column, and then select Remove Pivot.

Troubleshooting pivots

  • Red fields in the view and fields with exclamation points in the Data pane: Because the original fields are replaced with new pivot fields, any references to the original fields in the view will no longer work. They cause fields to become red in the view or show a red exclamation point next to the field in the Data pane.

  • Null values in the grid: If all of the original fields used in the pivot are removed, for example in an extract refresh, null values display in the pivot fields.

  • No pivot option: Pivot appears when you select two or more columns in a single Microsoft Excel, text file, Google Sheets, and .pdf data source. If using a different data source in Tableau Desktop, you can use custom SQL to pivot.

Pivot using custom SQL (Tableau Desktop)

You can also use custom SQL to pivot your data, even if you aren't working Excel, text file, Google Sheets, and .pdf data sources. When you use the UNION ALL operator in a custom SQL query, you can take values from distinct columns and put them into a new column.

For example, suppose you have a table called 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

To optimize your analysis of this data in Tableau, you can use the following custom SQL query to pivot the "Start Time" and "End Time" columns so that their values are in a single column.

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

The above custom SQL query does the following:

  • Pivots the Start Time column header into a string value called Start and adds that value to a new column called Action.
  • Pivots the End Time column header into a string value called End and adds that value to a new column called Action.
  • Pivots the Start Time and End Time columns so that their values are in a new column called Time.

The following table shows the results of this custom SQL query.

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

 

To pivot data using custom SQL

  1. Connect to your data.

  2. Double-click the New Custom SQL option in the left pane. For more information, see Connect to a Custom SQL Query.

  3. In the Edit Custom SQL dialog box, copy and paste the following custom SQL query and replace the contents with information about your table:

    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]

    Where the following is true:

    • Static Column: A comma-delimited list of the columns from Table, both dimensions and measures, which should not be included in the pivot.

    • New Value (from Column Header 1-3): New names that you give to the original column headers, which are used as row values in the pivot.

    • Pivot Column Values 1-3: The columns whose values need to be pivoted into a single column.

    • New Column Header: The name you give the new column that contains the new row values from New Value (from Column Header 1-3).

    • New Values: The name give the new column that contains the original values from Pivot Column Values 1-3.

    • Table: The table that you connected to.

  4. Click OK.

Thanks for your feedback!Your feedback has been successfully submitted. Thank you!