
Tableau 8つのハードルを越える㉑「ブレンディング(データブレンド) その2 基礎編」

こんにちは。
前号からの続き「ブレンディング その2」です。(かなり長いです!!)
前号「ブレンディング その1」は下記になります。
(なお、この記事では、2018年版のサンプルスパーストアデータを利用しています。)
今回、前回の説明でも利用したExcel
・サンプルスーパーストア注文シート
・目標額シート
をブレンディングで利用しようと思います。
*補足
実際には、これからご紹介するケースのベストプラクティスは、データモデル「リレーションシップ」です。
ですが、今回はブレンディングの概要の解説のため、ブレンディングを利用した方法から説明させていただきます。
(なお、リレーションシップについては下記記事もございます。
https://note.com/ritz_tableau/n/ne01ca58302b7 )
繰り返しになりますが、ブレンディングはTableauで複数のデータソースを、またがって利用する機能です。
ここで、前回も触れた「結合」との違いを改めて整理したいと思います。
結合は、複数のデータテーブルをくっつけて一つのデータソースを作ります。
ブレンディングは、データテーブルをくっつけず、別々のデータソースとしたまま、両方のデータを利用する方法です。下図のイメージです。

では、早速やってみましょう。
まず、サンプルスーパーストア注文シートにいつものように接続します。

このように、データソースが作られました。画面左上のドラム缶のようなアイコンがついているのが、データソースになります。「注文(サンプルスーパーストア)」という名前が自動的につけられています。
ここで、さらに他のExcel「目標額」に接続し、もう一つデータソースを作りたいと思います。
下図の赤丸、ドラム缶に+マークがついているアイコンをクリックします。新しいデータへの接続ボタンです。

すると、最初にデータに接続するときと同じような画面が開くので、接続したいデータを選びます。
ここでは、Excel「目標額シート」に接続しました。下図のExcelシートです。

すると

このように、Tableauの画面にもう一つドラム缶アイコンが加わりました。「目標額(目標額)」という名前がついています。
(なお、接続直後はオーダー日が数字として認識されメジャーになっていたので、ディメンションに移動しデータ型を日付に変更してあります。)
これで、このワークブックで2つのデータソースを利用できる体制が整いました。
この、ドラム缶アイコン部分をクリックすると画面左側のディメンション、メジャーが表示される部分が、そのデータソースのディメンション、メジャーに切り替わります。

複数のデータソースを扱っている時、このようにディメンション・メジャーの部分が選んだデータソースによって変わります。慣れないうちは時々、「あれ?あるはずのフィールドが見つからない。」など混乱する場合があります。その時は、左上ドラム缶アイコンの部分で所望のデータソースが選択されているか、確認して下さい。
では準備が整ったので、これからVizを作っていきます。
まず、注文(サンプルスーパーストア)のデータソースから、売上を行に、オーダー日を列に持っていきました。

このように、年毎の売上推移のVizが出来ました。
このとき、

上図のように、画面左上、ドラム缶のついたデータソースに、青いチェックマーク印がついているのにお気づきでしょうか?
ちょっと、この青いチェックマークを覚えておいて下さい。
次に、目標額(目標額)のデータソースを使います。
ドラム缶アイコンと「目標額(目標)」が表示されている部分をクリックし、データソースを目標額(目標)に切り替えました。そして、メジャーの目標額を行に持っていきます。

このようなVizになりました。
売上の線グラフの下に、目標額の線グラフが追加されました。(点線枠部分)
これで、異なるデータソースのデータがあわさったVizが出来ました。
このように、複数のデータソースからデータを利用し一つのVizを作るのがブレンディングという機能になります。
さて、ここで画面を見ると

上図赤丸部分に何ヵ所か、普段見ないオレンジ色の部分と、灰色のアイコンが現れている事が分かります。
ドラム缶についたオレンジ色のチェックマーク
行に置かれた合計(目標額)のオレンジチェックマーク
目標額(目標額)データソースの、ディメンションの「オーダー日」の右側にある灰色の鎖が繋がっているアイコン
画面左側、ディメンション、メジャーが並んでいるところの横のオレンジ色の縦棒
です。
それぞれ、何かを解説していきます。
データソースのオレンジマークは、セカンダリデータソースを示すマークです。
先ほど、このVizを作り始めた時、青色チェックマークを見て頂きました。
この青色のチェックマークは、プライマリデータソースの意味です。
プライマリデータソースとは、それぞれのワークシートを作り始めた時、最初に利用したディメンションやメジャーが含まれていたデータソースの事です。
ではプライマリデータソースというのはどのようなものか?というと、最初はとっつきにくいですが簡単に表現すると、このワークシートの親のような立場、偉い立場と思って下さい。
なお、プライマリデータソースは、ワークシート単位で決まります。別のワークシートを作る場合は、そのワークシートで最初に利用したディメンションやメジャーが含まれているデータソースが、そのワークシートのプライマリデータソースとなります。
また、それぞれのワークシートの中で、プライマリデータソースは一つに決まります。二つ以上のデータソースがプライマリになる事はありません。
一方、オレンジ色のセカンダリデータソースは、このワークシートの中で子供、言いかえるなら子分のような立場です。
なお、ワークシートの作成に3つ以上のデータソースを使っている場合には、プライマリデータソース以外は全てセカンダリデータソースとなります。なので、セカンダリデータソースが2つ、3つある場合もあります。
また、このセカンダリデータソース同士の間は平等です。どちらが偉いという事はありません。そんなイメージを持ってください。
次に、「オーダー日」の横についた灰色の鎖が繋がっているアイコン。これは、Tableauが「このセカンダリデータソースのオーダー日は、プライマリデータソースのオーダー日とつながっています。つまり、共通のデータの切り口と理解し働かせています。」という事を示すマークです。
(Tableau用語では、上記の「共通の切り口」を「ブレンド関係」と呼んでいます。この記事では、「共通の切り口」という言葉で表現しています。)
上図のVizでは、最初、プライマリデータソースのオーダー日で、プライマリデータソースの売上推移を表示しました。
次に、セカンダリデータソースにあるメジャー目標額を置きました。この時、Tableauが「列に置かれているプライマリデータソースのオーダー日と、セカンダリデータソースのオーダー日は同じ共通の切り口だな」と考え、プライマリデータソースと同じように、セカンダリデータソースにある目標額も年毎に集計しVizを作っています。
といっても言葉で表現すると難しいので具体的に、どのように2つのデータソースが使われたのか、図でイメージしてみます。
まず注文(サンプルスーパーストア)のデータで、売上が年毎に集計されます。
下図の集計結果が出来ます。

次に目標額(目標額)についても、オーダー日の年毎に集計されます。
下図の結果です。

これで二つ集計済みテーブルが出来ました。
これを、プライマリデータソースである注文(サンプルスーパーストア)の集計済みテーブルを左において結合を行います。(*ここでの結合は一般的な用語としての結合です。Tableauのデータ接続画面で行う結合の事ではありません。)

結合キーとしては、プライマリデーソース、セカンダリデータソース共通の切り口としてTableauによって認識されたオーダー日(の年)となります。
なお、この結合方式は左外部結合の方法で行われます。
左外部結合とは、左側のテーブルにあるものは全て反映するけど、右側のデータにあって左側にないものは除外される、という結合方法です。
なので、もし注文シートに2018年のデータがなく、目標のシートに2016年のデータがない場合

このような結合となり、最終的に

このようになります。左側の2016年は残りますが、右側の2018年はなくなっています。
ここが、プライマリデータソースは「偉い」と表現した理由です。
ようするに、プライマリデータソースにあるデータは全て残る。セカンダリデータソースにしかないデータは除外される。です。
あれ、結局、ブレンディングも結合なの?
と思われたかもしれません。
「ブレンディング」が、「結合(データ接続画面で設定する結合のこと)」と大きく違うのは「それぞれのデータソースの中で集計したあと、集計結果のテーブルを結合している」という点です。「結合(データ接続画面で設定する結合のこと)」は、集計前の行同士の結合です。
参考までに、このブレンディングを言葉で表現する場合は
「複数のデータソースを、共通の切り口としてTableauが認識しているディメンションで集計した後、プライマリデータソースの集計テーブルを左側に置いて左外部結合している。」と表現出来ます。
(*ここでの結合は一般的な用語としての結合です。Tableauのデータ接続画面で行う結合の事ではありません。)
以上、まずは、ブレンディングの例を紹介しました。
あとは、2重軸でBar Chartにし地域毎にも見るなどすると、下記のようなVizが作成できます。

上記Viz、Tablau Puclic リンク
https://public.tableau.com/app/profile/satoshi.ganeko/viz/___v2019_1/sheet0
しかしながら、この例は、やる気になれば「結合(データ接続画面で設定する結合のこと)」を利用した行同士の結合でも実現できない事はない課題でした。ブレンディングの真価は、もっと違うところにあります。
私が、2014年にTableauを試験的につかってみて「これはすごい!絶対導入しよう」と感じたのは、このブレンディングの真の能力(ちょっと大げさ)でした。
次号「その3」で、その説明をさせて頂きます。
「ブレンディング その3」は下記になります。
ご精読ありがとうございます。
*連載記事すべてへのリンクは、こちらのマガジンにまとめています。
By ritz_Tableau
2020-2023 Tableau Zen Master | 2019-2021,2023 Tableau Public Ambassador |2021 certified as Tableau Certified Professional | DATA Saber
X(Twitter) : @ritz_Tableau
Tableau Public : https://public.tableau.com/profile/satoshi.ganeko#!/
*記事の中に不正確な点などありましたら、是非、X(Twitter) Direct Messageでお知らせ下さい。よろしくお願いします。m(__)m

おことわり
当記事のコンテンツについて、商用利用でない場合は許可なく転載して頂いて構いません。(ハードル画像および他のサイトから引用している画像は除く)
転載の際は、当記事へのリンクを掲載し転載であることを明記してください。商用利用の場合は許可なく転載しないで下さい。
当記事のコンテンツについて、可能な限り正確な情報を掲載するよう努めていますが、誤情報が含まれたり、情報が古くなっている可能性があります。当記事に掲載された内容、および、当記事からリンクやバナーによって移動したサイトに掲載された内容によって生じた、損害等の一切の責任を負いかねますのでご了承ください。よろしくお願いします。