Tableauのデータ結合と新規データへの入れ替えについて説明します
結合とは?
Tableauにおける「結合」は、「Tableauの複数データの取扱いについて(概要編)」の記事でも以下の通り説明しました。
「結合」は、Microsoft ExcelのVlookup関数のイメージが近いです。もしくは、SQLなどご存知の方であれば「Join」という言葉を聞いたことのある方がいらっしゃるかと思いますが、それをご存知であれば「JOIN」に相当するものになります。
操作としては「キー列に基づいて複数のテーブルを結合する」というものですが、言い換えますと「ある特定の項目の値が一致するレコード同士の項目を結合する」イメージとなります。
さらに簡単に言い換えますと、「複数のテーブルを横に連結する」というものになります。
例えば、以下のサンプルであれば、「No」という項目内の値で、一致するレコードを横に連結している形となります。
結合のやり方について
それでは、実際の結合を行ってみたいと思います。
Tableau付属のいつもの「サンプル - スーパーストア.xls」を使いたいと思います。ファイルの場所は、おそらく「マイドキュメント」の「マイTableau リポジトリ」の「データソース」のバージョン番号(例:2018.3)の「ja_JP-Japan」にあるかと思います。
なお、このファイルには3つのシートがあり、それぞれ「注文」「返品」「関係者」となっています。
「注文」シートは、いわゆる販売データとなっています。「返品」シートを今回使いますが、返品された「オーダーID」に「○」が入っているだけのシートです。返品されていないオーダーIDはレコードとして存在していません。
この2つのシートから、以下のようなイメージの形で結合を行いたいとします(いわゆる「左結合」での結合を実施)。
それでは手順を追っていきます。Tableau起動直後の画面から、「サンプル - スーパーストア.xls」へ接続するために「Microsoft Excel」を選択すると、ファイル選択のメニューが開きます。
ここで、ファイル「サンプル - スーパーストア.xls」を指定すると、以下のような画面になります。
「ここにシートをドラッグ」というオレンジ色の文字のところに、最初に読み込みたいシートをドラッグ&ドロップします。今回は、「注文」をドラッグ&ドロップしてください。
すると、最初のシートが読み込まれます。
次に、結合したいシートをドラッグ&ドロップします。今回は「返品」のシートをドラッグ&ドロップしてください。
すると、デフォルトでは内部結合で結合されます。
結合方法を変えたい場合は、下図のように結合アイコンをクリックします(今回は、「左結合」で結合したいので、クリックする必要があります)。
ここで、結合方法の設定は、
- 結合方法の指定
- キーフィールドの指定
の2つです。結合方法のアイコンをクリックすると、以下のような設定画面が出てきます。
今回行う内容として、「注文」シートすべてのレコードと、それに対して「返品」シートに存在するレコードに対して「○」を結合することとします。イメージとしては以下の画像の通りです。
この場合は、左結合になるので、以下のように設定します。キーフィールドはデフォルトのままでOKです(Tableauって頭良い!)。
なお、キーフィールドについては、結合しようとする2つのシートやテーブルにて名前が一致する項目があれば自動的に表示されますが、項目名が異なる場合は自分で設定する必要があります。また、複数の項目を設定することも可能ですので、状況にあわせて設定するようにしてください。
ここで、データソースの画面にて右の方へスクロールさせて行くと右端の方に結合された項目が出てきますが、実際に「返品」シートの「オーダーID」と「返品」が結合されていることがわかると思います。左結合ですので、「注文」「返品」シート両方に存在するレコードは、それぞれの値が入っていますし、「注文」シートに存在して「返品」シートの方に存在しないレコードは「Null」という表記になっているかと思います。
ここまでで、結合は完了になります。
実際にシート1に移ると、それぞれのシート名とその中に項目があることがわかると思います。
注意結合設定がデフォルトのままであれば、「注文」「返品」シート両方に存在するレコードのみとなるので、件数が少なくなります(注文:1万レコードに対して、返品:1,263レコードとなるため、誤って内部結合にしてしまいますと、結果は1,263レコードとなります)。慣れないうちは、必ず件数の確認をしましょう。
2つ以上のテーブルでも結合は可能です
上の例では2つのテーブル(シート)で結合を行いましたが、3つ以上のテーブル(シート)でも可能です。やり方としてはドラッグ&ドロップしていくだけですので割愛しますが、下図のようなことも可能です。
結合したデータソースの入れ替えを行う際の注意点
結合を行っているワークブックのデータソースの入れ替えを行う際、若干注意点があります。
手順としては、
- 新しいデータソースの追加
- (自動的に結合されたら)削除
- データソースの入れ替え
- 古いデータソースを削除
という流れになります。
それでは今回は、2019年のスーパーストアのファイル(今回はファイルコピーでリネームしただけのダミーのファイルです)に入れ替えたいとします。
1.新しいデータソースの追加
まずは、左上にある「追加」をクリックします。
普通にデータソースへの接続ボタンを押した時と同じようにダイヤログが出現しますので、今回もExcelファイルということであれば「Excel」をクリックします。
ここで、入れ替えたいファイルを選択すると、以下のように新たな接続として追加されます。
ここで、「接続」にあるデータソース名をクリックすると、下側のシートの部分がクリックしたデータソースのものになります(今回は同じシート名を含んでいるので、表面上は見た目が切り替わりません)。
2.(自動的に結合されたら)削除
Excel同士ではなりませんが、Excelに対してCSVファイルなどを追加すると、自動的に結合までされてしまうことがあります。
このような場合は、さくっと削除してください。自動的に追加されたデータソースのシート名を右クリックし、メニューから削除を選択します。
3.データソースの切り替え
ここまでくればあと少しです。「接続」にある新たなデータソースの新たなシートから古いデータソースの方へドラッグ&ドロップすると、新しいデータソースに切り替わります。
古いシート名にドラッグ&ドロップする際、ユニオンにならないように気をつけてください。以下のような状態でドロップすると、ユニオンになってしまいます(「表をユニオンへドラッグ」が出ていない状態でドロップするのが正解です)。
うまく行けば、以下のようにシート名の左端の色が変わります。
そもそも、接続しているデータソース名と、右側にあるテーブル名の左端が色分けされていると思いますが、それぞれ対応しています。
「返品」シートも同様にして入れ替えましょう。
4.古いデータソースを削除
データソースの入れ替えが終われば、古い方のデータソースを削除して終了です。
「接続」から古い方のデータソースを右クリックし、メニューから「削除」を選ぶとデータソースの入れ替えは終わります。
その他注意事項
ここでは紹介していない「よくある注意事項」を紹介します。
- データ結合ができないデータソースがあります(Tableau Serverデータソース、抽出専用データ等) → データブレンドをご利用ください
- データベースの種類が異なる場合は「クロスデータベース結合」となります(見た目上通常の結合と変わりませんが、パフォーマンスに問題がでる場合があります) → データの「抽出」の利用を検討ください
- キーフィールドの指定で、計算式も利用可能です
- キーフィールドで日付を含む項目を指定する場合は、詳細レベル(年まで入っているのか、日付まで入っているのか)を確認して、紐付けるキーフィールドが同じレベルになっていることを確認してください → 場合によっては計算式で加工する必要があります
- その他詳細はTableauのオンラインヘルプfa-share-square-oをご確認ください。
まとめ
今回は、Tableau Desktopにおけるデータ結合と結合したデータの入れ替えのやり方について紹介しました。データ結合はTableauを使う上で基本的な事項となります。データ分析の際、ほとんどの場合で複数データソースを扱うと思いますし、その中でも結合する機会は多いと思いますので、慣れていただければと思います。
なお、データ結合については細かい制限や注意事項などありますので、Tableauのヘルプfa-share-square-oもご確認ください。
また、Tableauの複数データの扱いについて概要を記載した記事もありますので、あわせてご確認ください。
※Tableau Desktop 2018.3時点の情報です