【Tableau】Tableau Prepを改めてご紹介(3)

Tableau Prep について改めてご紹介します(続き)

2ヶ月前に、Tableau Prepを改めてご紹介(2)の記事を書かせて頂きました。

ユニオンもよく使う機能ですので、ぜひ正しく扱えるようになりましょう。

 

今回は、ピボットについて紹介させて頂きます。

※Tableauのピボット自体がどのようなものかは、過去記事でも紹介しておりますので、気になる方は”Tableauでのピボット操作について”をご覧ください。

 

ピボットも、ETLツールとしてデータの前処理をする際必ず必要になる基本的な機能ですので、正しい使い方は理解した上で扱う必要あります。

Tableauのピボットの方法はいくつかありますが、主に以下のような形となります。

ピボットの種類(DesktopとPrep)

Tableau Desktop
  • データ読込み画面(データソースのシート)で、ピボット処理したいフィールドを指定【列 ➡ 行】  ※行➡列の変換はありません。

TableauServerなど一部のデータはピボット処理不可

以下のように、1つの列にまとめたいフィールドを選択して、”ピボット”を実行すると、変換が可能です。

Tableau Prep

1) 列 ➡ 行 の変換

複数の列フィールドを、1つの列に集約し行レベルに変換することが可能です。

2) 行 ➡ 列 の変換

行フィールドを、複数の列に変換することが可能です。(特定のメジャーを列の値に割当てます。以下例は各地域の列に売上金額を表現)

Tableau Prepの特徴としては、以下の2点になります。

・列➡行、行➡列 どちらも可能。

・TableauPrepで接続できるデータであればいづれもピボット処理が可能。(Tableau Desktopでは、TableauServerのデータなど一部についてはピボット不可)

Tableau Prepでピボット処理してみよう

Tableau Prepの例を見ていきましょう。

1)列➡行の変換処理の例

今回のサンプルデータは、サンプルスーパーストアですが、オーダー日と、地域別に売上のフィールドがあるようなデータを想定します。

横持ちのデータは扱いにくいことが多く、縦持ちに変換して利用するケースとします。

ピボットを追加すると、初期値は”列から行” の変換となっています。

 

<設定の流れ>

  • ピボット(列➡行)設定で、左側に表示されるフィールド一覧から、縦持ちに変換したい列フィールドを選択し、ピボット設定欄にドラッグ&ドロップします。

(例では、各地域の列を選択して、ドラッグ&ドロップしています)

※以下のように個別で指定もできますし、任意のワードでワイルドカード検索で該当するものを一括処理することも可能です。

<ピボット処理の結果>

各地域の列フィールドの売上金額が、地域列と売上金額のフィールドに集約されます。

 

2)行➡列の変換処理の例

次に、縦持ちのフィールドを、行➡列のピボットで横持ちに変換する例を見て行きましょう。

ピボットのアイコンを追加し、設定欄にて「行から列」に変更すると、アイコンが変化します。

<設定の流れ>

① ピボット(行➡列)設定で、左側に表示されるフィールド一覧から、横持ち(列カラム)に変換したい列フィールドを選択し、ピボット設定欄(上段)にドラッグ&ドロップします。

(例では、地域の列を選択して、ドラッグ&ドロップしています)

② 次に、列フィールドに地域を設定したとき紐づける値を集計フィールド欄(下段)にドラッグ&ドロップします。

(例では、売上の列を選択して、ドラッグ&ドロップしています)

※順番が決まっていまして、ピボット対象のフィールドを先にセットして、集計対象のフィールドをセットします。

 

これにより、地域列と売上列だったものが、各地域の売上という列が地域の分だけ生成されます。

<ピボット処理の結果>

 

 

ここで、ピボットを扱う際の注意事項を把握しておきましょう。

 

ピボット機能が働かないことが稀に発生

ピボットのアイコンを設置して、処理したいフィールドを選択してドラッグ&ドロップしたとき、稀に反応しないことがあります。(原因は不明)

もしそのようなことが起こったら、、、、、慌てず、別の方法も検討してみてください。

例えば、列を行に変換するピボットがうまく機能しなかったとき・・・・、列の数にもよりますが、それほど多くない場合は、以下のように個別対応も可能です。

 

<ピボットを使わずに処理する例(列➡行)>

1)各フィールドのみの分岐をつくり、ユニオンで1つのカラムに集約する例となります。

この例は、地域毎の売上のカラムを、1地域毎に分岐した処理をつくり、地域フィールドで”地域”を記し、ユニオンで1つにするというものです。

この方法を取る場合は、別途、各地域で、地域フィールドを作る必要があります。

また、各地域の名称のフィールドに値(この例は売上金額)が入っていますが、これらを1つのフィールドにします。

すべて選択し、「フィールドのマージ」をクリックすると、1つのフィールドに集約が可能です。

名前はいづれか1つになりますので、適した名前にリネームします。

これで、元々地域フィールド毎に売上金額が入っていた列フィールドのテーブルを、地域フィールドと売上金額フィールドの2つにピボット(列➡行)することができました。万が一のときは試してみましょう。

 

行➡列 ピボットは、Prepのフロー全体で1つでもエラーが発生していると、利用不可

例えば、下図は、地域フィールドを列にピボットしたあと、フィールド名を変更した場合を見てみます。

地域フィールド名を変更します。

 

ここで、元のピボット処理の内容に変更が必要なことがわかり、以下のように修正を試みます。

1つの例は、以下のように、ピボット対象のフィールドはそのままで、集計対象を入れ替える例です。

こちらは、元のフィールドを消して、新たなフィールドをセットすれば、入れ替えは可能となります。

 

次に、ピボット対象の地域を触る例を見てみます。

”地域”のフィールドをピボットから削除すると、そのあとのフローで”地域”を扱う処理がある場所でエラーが発生(アラート表示)します。

この状態で、再度”地域”を入れても、以下のようにエラーが出てしまいます。

こうなると・・・・、このピボットアイコンは、ほかのエラーを一旦解消しないと使えなくなってしまいます。

この例だと、次のクリーニング8のエラーを解消する必要が出てきます。

以下の例はシンプルなフローなのでまだ解消は簡単ですが、このあとに多数の処理が含まれる大規模なフローなどを扱っていると、いたるところで関連するエラーが発生し大変なことになってしまいます。。。

この問題の回避方法としては、

行➡列ピボットの内容の変更が必要になった場合は、既存のは触らず、行➡列ピボットを新規に追加し、必要な設定を行い、内容に問題ないことを確認した上で、既存のピボットの接続を外し、新しいピボットに繋ぎ換える方法があります。

ピボット処理は簡単そうに見えて、少し独特な動きをしますので、注意して扱いましょう。

 

なんだかややこしい、、、、と思った方もいらっしゃるかもしれませんが、Prepでのピボット処理は、データの前処理をする上では色々と使う機会が出てくると思います。

Tableauのビジュアライズの上ではデータは縦持ちが扱いやすいですが、特定のフィールド同士で事前に計算などする際は、一旦 行➡列ピボットで変換して、フィールド同士の計算がしやすい状態にしてから必要な計算を行い、また 列➡行ピボット で元に戻すといったことも可能です。

 

今回は改めて、Tableau Prepのピボットについて注意する点をご紹介させて頂きました。

一見、単純な”ピボット” でも、気を付けないと誤ったデータを作成してしまいますので、注意しましょう。

前回の結合やユニオン、今回のピボットはよく使う処理です。データを自在に扱えるようになるため、正しく使えるようにしておきましょう。

※Tableau Prep 2022.2.1時点の情報となります

BI製品のサポートはぜひKCMEで!

AlteryxとBI製品を組み合わせた環境構築やサポートなど承ります。お気軽にご相談ください。

おすすめの記事