---
schema_version: "1"
id: eff30ccf3c996144b829ce188a19fafba88203ec9e842be3f3fa00906e23e567
title: ピボット データ ([列] から [行])
collection: tableau
version: next
locale: ja-jp
portal_url: https://docs.salesforce.com/tableau/next/ja-jp/pro/desktop/pivot.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/ja-jp/pivot.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 80bf6efaf5fdde4fe9529e23f3dfa7c5998da7a0552c805c2f7121d33ea4c1d8
description: Pivot data from crosstab columns to rows, including via custom SQL.
---
[メイン コンテンツに進む](#main-content)

# ピボット データ (\[列\] から \[行\])

クロス集計の書式で保存されているデータの分析は、Tableau では困難な場合があります。Microsoft Excel、テキスト ファイル、Google スプレッドシート、.pdf のデータ ソースを扱う際には、データのピボット処理を行うことにより、クロス集計書式からコラム書式に変換することができます。その他のデータ ソースを操作している場合は、[カスタム SQL を使用するピボット (Tableau Desktop)](#Pivot)することができます (Tableau Desktop)。

たとえば、3 社のベンダーが四半期ごとに販売したデバイスの台数が、個別のフィールドに入っているものとします。この場合、ピボット処理により、ベンダーを 1 つのフィールドに、デバイスの販売数を別のフィールドに入れることができます。

![コンテンツが列から行にピボットされました。](/tableau/next/ja-jp/pro/desktop/ja-jp/Img/qs_pivot_example.png)

## データのピボット処理

データ ソースをセット アップしたら、グリッドで、2 列以上の列を選択します。列名の隣のドロップダウン アローをクリックして、\[ピボット\] を選択します。新しい列、「ピボット フィールド名」および "「ピボット フィールド値」が作成され、データ ソースに追加されます。ピボットを作成するために選択した元の列は、新しい列で置き換えられます。

![ピボット フィールドのオプションがあるフィールドのコンテキスト メニュー。](/tableau/next/ja-jp/pro/desktop/ja-jp/Img/qs_pivot_command.png)

## ピボットへの追加

ピボットにさらにデータを追加するには、別の列を選択し、列名の横にあるドロップダウン矢印をクリックして、\[ピボットに追加\] を選択します。分析を開始する前に、ピボットの列とそれらの値が予期したとおりであることを確認してください。

![ピボットにデータを追加するオプションがあるフィールドのコンテキスト メニュー。](/tableau/next/ja-jp/pro/desktop/ja-jp/Img/qs_pivot_add.png)

ピボットを削除するには、ピボット列の名前の隣のドロップダウン アローをクリックして、\[ピボットの削除\] を選択します。

## ピボットのトラブルシューティング

- **ビューの赤いフィールド、および \[データ\] ペインの感嘆符の付いたフィールド**: 元のフィールドは新しいピボット フィールドに置き換えられるため、ビュー内の元のフィールドへの参照は機能しなくなります。これにより、ビュー内のフィールドが赤色になるか、\[データ\] ペイン内のフィールドの横に赤色の感嘆符が表示されます。
- **グリッド内の NULL 値:** ピボットに使用されている元のフィールドがすべて削除されている場合 (抽出の更新など)、ピボット フィールドに NULL 値が表示されます。
- **ピボット オプションなし**: ピボットは、単一の Microsoft Excel、テキスト ファイル、Google スプレッドシート、.pdf のデータ ソースで 2 つ以上の列を選択する場合に表示されます。Tableau Desktop で別のデータ ソースを使用している場合は、カスタム SQL を使用してピボット処理を行うことができます。

## カスタム SQL を使用するピボット (Tableau Desktop)

Excel、テキスト ファイル、Google スプレッドシート、.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 (終了時刻)" 列をピボット処理し、それらの値を 1 つの列に配置できます。

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 クエリの結果を示しています。

<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic-Border-Light.css');" class="TableStyle-Basic-Border" cellspacing="0">
                    <colgroup><col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    </colgroup><thead>
                        <tr class="TableStyle-Basic-Border-Head-Header1">
                            <th class="TableStyle-Basic-Border-HeadE-Column1-Header1">Runner</th>
                            <th class="TableStyle-Basic-Border-HeadE-Column1-Header1">アクション</th>
                            <th class="TableStyle-Basic-Border-HeadD-Column1-Header1">Time</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Amanda</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">
                                <p>開始</p>
                            </td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9/3/2016 3:04 PM</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Oscar</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">開始</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9/3/2016 3:04 PM</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">William</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">開始</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9/3/2016 3:04 PM</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Amanda</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">終了</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9/3/2016 3:25 PM</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Oscar</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">終了</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9/3/2016 3:21 PM</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">William</td>
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">終了</td>
                            <td class="TableStyle-Basic-Border-BodyA-Column1-Body1">9/3/2016 3:16 PM</td>
                        </tr>
                    </tbody>
                </table>

### カスタム SQL を使用してデータをピボット処理するには

1. データに接続します。
2. 左ペインの \[新しいカスタム SQL\] オプションをダブルクリックします。詳細については、[カスタム SQL クエリへの接続](https://help.tableau.com/v0.0/pro/desktop/ja-jp/customsql.htm)を参照してください。
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_\]
    
    次が true の場合:
    
    - _"Static Column (静的な列)"_: ピボットに含めない、_"Table (表)"_ の列のコンマ区切りリスト (ディメンションとメジャーの両方)。
    - _"New Value (from Column Header 1-3) (新しい値 (列ヘッダー 1-3))"_: ピボットの行の値として使用される、元の列ヘッダーに付ける新しい名前。
    - _"Pivot Column Values 1-3 (列の値 1-3 のピボット処理)"_: 値を 1 つの列へとピボット処理する必要がある列。
    - _"New Column Header (新しい列ヘッダー)"_: _"New Value (from Column Header 1-3) (新しい値 (列ヘッダー 1-3))"_ の新しい行の値を含む新しい列に付ける名前。
    - _"New Values (新しい値)"_: _"Pivot Column Values 1-3 (列の値 1-3 のピボット処理)"_ の元の値を含む新しい列に付ける名前。
    - _"Table (表)"_: 接続する表。
4. \[OK\] をクリックします。