Tableau Desktop 使い方 データの加工(3) 〜リレーションシップと複数テーブルの分析

Tableauでは数多くのデータソースに接続して必要なデータを抽出し、様々な形式を持つ複数テーブルをまたいで分析することができます。

本ページでは、バージョン2020.2から新たに追加されたリレーションシップを設定してフォーマットの異なる複数のテーブルを読み込み、分析する方法を紹介します。

リレーションシップを利用すると複雑な設定をしなくてもテーブルどうしを関連づけることができます。
また、Tableauが分析(ビジュアライゼーション)時に結合のタイプを自動的に決定してくれるので、フォーマットの異なる複数のテーブルも問題なく分析することができるようになります。

以下、(1)データの読み込み時のリレーションシップの設定の方法と(2)分析時に選択するフィールドによって異なる結合のタイプを紹介します。

リレーションシップの設定

Tableauで複数テーブルのデータを読み込む際にはリレーションシップ(関係)を設定します。
リレーションシップとは複数テーブル間の関連付けのことを指し、どのフィールドで関連付けるかはTableauが自動的に選んでくれます。

具体的な例で動作を紹介したいと思います。

以下のように、スーパーストアのサンプルを超簡略化した「注文」「返品」「担当者」の3テーブルから構成されるデータを利用します。

データをTableauで読み込みます。
Tableauでリレーションの設定
左側のペインにある「注文」テーブルをキャンバスにドラッグ&ドロップします。
次に「返品」テーブルも同様にドラッグ&ドロップします。
すると以下のようになります。
Tableauでリレーションの設定
2つのテーブルが線で結ばれてリレーションシップが設定されました。
「注文」テーブルの「オーダーId」と「返品」テーブルの「オーダーId」を共通のキーとしてテーブルが関係づけられたことが分かります。
続けて「担当者」テーブルをキャンバスにドラッグ&ドロップします。
すると以下のようになります。
Tableauでリレーションの設定
今度は「注文」テーブルの「地域」と「関係者」テーブルの「地域」を共通のキーとしてテーブルが関係づけられました。

データソース画面からワークシートに移ると以下のようになっています。

Tableauで複数テーブルの読み込み

データペインにはテーブル毎にディメンションとメジャーのフィールドが表示されていて、すべてのテーブルに共通の「メジャーネーム」と「メジャーバリュー」のフィールドが一番下に表示されています。

このようにTableauでは、リレーションシップが動的に設定されて複数テーブルを読み込むことができます。ただし、この段階では関係が定義されただけで、実際にテーブルの結合はその後の分析時に行われます。

テーブルの結合は、分析時に設定するフィールドの種類に応じてタイプ(内部・左外部・完全外部結合)が異なります。

次はそれらを詳しくみていきましょう。

選択フィールドによる結合タイプの違い

分析(ビジュアライゼーション)時にワークシート上で設定するフィールドの種類によって、複数テーブルの結合のタイプは以下のように異なります。

ケース1:両テーブルからディメンションを選択して分析
    ➡︎ 内部結合
ケース2:一方のテーブルからディメンション、もう一方からメジャーを選択して分析

    ➡︎ 完全外部結合
ケース3:一方のテーブルからディメンションとメジャー、もう一方からディメンションを選択して分析

    ➡︎ 左外部結合
ケース4:両テーブルからディメンションとメジャーを選択して分析

    ➡︎ 完全外部結合

上と同じ例題で、それぞれのケース別に結合のタイプと分析結果を確認してみます。

両テーブルのディメンションで分析

両方のテーブルからディメンションのフィールドを選択する場合には、結合のタイプは内部結合になります。

本ケースに当てはまる例として、返品されたオーダーの一覧を見たい場合を考えてみましょう。

利用するのは注文テーブルの「オーダーId」と返品テーブルの「オーダーId」です。
それらのテーブルが内部結合すると、それぞれの「オーダーId」が共通キーとしてリレーションシップが設定されているので、両テーブルの「オーダーId」が存在する行のみが抽出されます。
複数テーブルの内部結合

実施に集計してみましょう。
データペインから注文テーブルの「オーダーId」と返品テーブルの「オーダーId」を行に、返品テーブルの「返品(返品)」をマークのテキストにドラッグ&ドロップします。
すると以下のようなビューになります。
Tableauで複数テーブルからディメンションを選択して分析
注文テーブルからディメンション「オーダーId」、返品テーブルからディメンションの「オーダーId」を選択するので内部結合になります。
内部結合なので注文テーブルと返品テーブルの両方に存在するオーダーのみが表示されていることが分かります。

一方のテーブルのディメンション、もう一方のメジャーで分析

あるテーブルからディメンション、もう一方のテーブルからメジャーのフィールドを選択する場合には、結合のタイプは完全外部結合になります。

例題として、マネージャー毎に売上と注文数を表示する場合を考えてみましょう。

利用するのは担当者テーブルの「マネージャー」と注文テーブルの「売上」「注文(カウント)」です。
それらのテーブルが完全外部結合すると、どちらかのテーブルに存在する行が集計されます。

実施に集計してみましょう。
データペインから担当者テーブルの「マネージャー」を行に、メジャーネームを列にドラッグ&ドロップして、メジャーバリューを「合計(売上)」と「カウント(注文)」に設定します。
すると以下のようなビューになります。
Tableauで複数テーブルからディメンションとメジャーを選択して分析
担当者テーブルからディメンション「マネージャー」、注文テーブルからメジャーの「売上」と「注文(カウント)」を選択するので完全外部結合になります。
完全外部結合なので、注文テーブルにないマネージャー「F」が表示されていますし、マネージャーが不明の注文の売上も集計されていることがわかります。

一方のテーブルのディメンションとメジャー、もう一方のディメンションで分析

あるテーブルからディメンションとメジャー、もう一方のテーブルから ディメンションのフィールドを選択する場合には、結合のタイプは左外部結合になります。

具体例として、地域毎にマネージャーと売上を表示したい場合を考えてみましょう。

利用するのは注文テーブルの「地域」「売上」と担当者テーブルの「マネージャー」です。
それらのテーブルが左外部結合すると、「地域」が共通キーとしてリレーションシップが設定されているので、注文テーブルに存在するすべての行に担当者テーブルで「地域」が一致する行が紐づいて抽出されます。
複数テーブルの左外部結合

実施に集計してみましょう。
データペインから注文テーブルの「地域」と関係者テーブルの「マネージャー」を行に、注文テーブルの「売上」をマークのテキストにドラッグ&ドロップします。
すると以下のようなビューになります。
Tableauで複数テーブルからディメンションとメジャーを選択して分析
注文テーブルからディメンションの「地域」とメジャーの「売上」、担当者テーブルからディメンションの「マネージャー」を選択するので、注文テーブルを網羅する左外部結合になります。
左外部結合なので、注文テーブルにない「北海道」は表示されておらず、また担当者テーブルにない「さいたま」と「茨城」のマネージャーは「NULL」になっていることが分かります。

両テーブルのディメンションとメジャーで分析

両方のテーブルからディメンションとメジャーのフィールドを選択する場合には、結合のタイプは完全外部結合になります。

具体例として、各オーダーの返品の有無と売上、返品数を表示したい場合を考えてみましょう。

利用するのは注文テーブルの「オーダーId」「売上」と返品テーブルの「オーダーId」「返品(カウント)」です。
それらのテーブルが完全外部結合すると、どちらかのテーブルに存在する行が集計されます。
複数テーブルの完全外部結合

実際に集計してみましょう。
データペインから注文テーブルの「オーダーId」と返品テーブルの「オーダーId」を行に、メジャーネームを列にドラッグ&ドロップして、メジャーバリューを「合計(売上)」と「カウント(返品)」に設定します。
すると以下のようなビューになります。
Tableauで複数テーブルからディメンションとメジャーを選択して分析
注文テーブルからディメンションの「オーダーId」とメジャーの「売上」、返品テーブルからディメンションの「オーダーId」とメジャーの「返品(カウント)」を選択するので、完全外部結合になります。
完全外部結合なので、注文テーブルにないオーダーid「99」の返品が表示されています。また返品テーブルにはデータのない注文も正しく集計されていることが分かります。

本ページでは、リレーションシップを利用してフォーマットの異なる複数のテーブルを読み込み、分析する方法を紹介しました。

タイトルとURLをコピーしました