Looker StuidoではUNIONが使えないというのが定説のようです。し、事実とも思います。しかし、やりようによっては、それっぽいことができるよ。という記事です。なぜそう思うかはおいおい説明しますが、ちょっと筋は良くないので、推奨するってほどでもないのですが、ワークアラウンドとして「(限界はあるけれど、それでも)やれば、Looker StudioでUNIONっぽいことができる」というのは知っていても損はないと思います。
UNION(ゆにおん)とは
UNIONとは、テーブルの集合演算の一つで「和集合」とも言われます。が、ま、そんなことは知らなくても良くて、「データを縦につなぐこと」だと理解しておけば良いです。例えば、以下の2つの独立したテーブルがあったときに、月別(つまり、1月と、2月)の売上の合計をグラフとして可視化したい。という時に必要となる作業です。
そのままだと月別の売上を一つのグラフで表現することができないので、2つのテーブルは独立したまま、分析上は以下のようなデータになっていないといけないことが分かります。それを「テーブルを縦につなぐ」ことで実現するのがUNIONです。
Looker StudioでのUNIONしたっぽいグラフ描画を実現した結果
この記事を読むとできるようになることを、以下の画像で示します。以下はLooker Studioのレポートですが、左側に配置した2つのテーブルをUNION的に処理し、知りたかった「月別の売上合計」を縦棒グラフとして表現できています。こういうことをしたいという方は、やり方を後述しますので、このまま読み進めてください。
一点、ご注意いただきたいのは、UNIONというのは本来は「データ接続」時に適用される技術であって、「グラフ作成」時の技術ではありません。なので、このブログ記事で解説するのも、「本来、データ接続時にできたら望ましいUNIONの機能が今のLooker Studioにはないので、データを読み込んでから、Looker Studioの関数の機能で、あたかもUNIONできたかのようにグラフを作る方法」です。決して、「こうやればLooker StudioでUNIONができますよ」と言っている訳ではありません。仕様的には「Looker StudioはUNIONに対応していない」のが事実であり、一ユーザーの私がその仕様を超えたことはできません。
Looker StudioでUNIONっぽいグラフを実現する方法
統合したデータソースの作成
UNIONとは何か?を説明した画像にあった、1月テーブル、2月テーブルを、別々のデータソースとして読み込んでおいて、「統合されたデータ」を作成します。この「統合された」とは「結合、JOIN(じょいん)」のことです。「結合」とはテーブル同士が共通して持つ値を「結合キー」として横につなぐことです。以下の画像が、1月テーブル、2月テーブルを「結合」した状態を示しています。
ポイントは、以下の2つです。
- (画像真ん中のアイコンが示している通り)「完全外部結合」を結合演算子として使うこと
- 結合キー(何かしらを設定するのが必須)として両方のテーブルとも「日付」を使うこと
「結合キー」である「日付」の値が一つも重なっていないので、完成した「統合されたデータ」の全カラム、全レコードを「表」で示すと、以下の通り、nullだらけの表が出来上がります。
COALESCE関数でNULLを他の値で読み替える
上記の「完全外部結合で作成した統合データから作成したnullだらけの表」ですが、よく見ると、ある規則的な修正をすることで、「nullのない日付列」も、「nullのない売上列」も手に入ることが分かります。その規則的な修正とは、以下です。
- 1月の日付がnullのところに2月の日付を入れる
- 1月の売上がnullのところに2月の売上を入れる
そして、その機能を実現するのが、COALESCE関数(コウアレス、や、コアリスと読むようです)です。この関数は、以下の書式を取り、「引数Aがnullでなければその値を返す、引数Aがnullでであれば引数Bの値を返す、引数Bもnullであれば引数Cを返す」という挙動をします。COALESCE関数についてのLooker Studio公式情報はこちらです。
COALESCE(引数A, 引数B, 引数C)
この関数を利用して、「日付」を、すべてのレコードに値の入った列で表現する計算フィールドが以下です。「日付(JAN)」があれば、それを、なければ、「日付(Feb)」を返せ。という内容です。シンプルで美しいですね。フィールド名は year_monthとしています。
同様に、この関数を利用して「売上」を、すべてのレコードに値の入った列で表現する計算フィールドが以下です。フィールド名は、salesとしています。
統合されたデータソースでは、計算フィールドはデータソース単位では作成できず、グラフ単位でしか作成できません。なので、ちょっと面倒です。私が、この方法はやればできるけど必ずしも筋は良くないと思っている理由の一つがそこにあります。
完成した全部入りの表
先ほど見た、nullだらけの表に、計算フィールドで作成した year_month、salesを加えた表が以下です。COALESCE関数が、想定通りのいい仕事をしていることが分かります。
ここまで来ると、もう、オリジナルの「日付」カラムも、「売上」カラムも不要なので、それらを表から取り去れば、こんな感じ。(下図の左側)もちろん、棒グラフも作成できます。(下図の右側)
UNIONできるテーブルの上限
ここまで読んで頂いた方方は、完全外部結合のJOINとCOALESCE関数の利用でUNION風な処理をしたグラフ作成ができることは理解できたと思います。一方、UNIONできるテーブルは2つまでなのか?もっとたくさんできるのか?いくつまでならできるのか?という疑問を持ったことでしょう。
答えは「5つまでのテーブルであればUNIONできる」です。
5つというのがLooker Studioの結合できるテーブルの上限でして、今回やり方が、結合を使っているので、結合できるテーブル数の上限が、UNION風に処理できるテーブル数の上限ということになります。意外と少ないですね。なので、私が、この方法はやればできるけれど筋が良くないと思っている理由の2つめがそこにあります。
以下は実験的に4つまでのテーブルをUNION風に処理できたよ、というエビデンスです。
宣伝
如何でしたでしょうか?「●●はできない」(例えば、Looker StudioではUNIONはできない)という情報に接した時に、「本当かな?」、「公式にはそうかもしれないけれど、なんとかならないものかな?」と少し批判的に(クリティカル・シンキングを利用して)考えてみると、意外と勉強になるような知識が身につくこともあるよね。という気づきとなれば嬉しいなと思います。
さて、この記事のテーマであったUNIONですが、Tableau Desktopや、SQLでは当然できます。なので、SQLやTableauを勉強したいと思った方もいらっしゃるのではないでしょうか?
そんな方に、良い講座があるんですよ、、、
動画の方が学びやすいという方はこちらを是非。
たくさんのレビューを頂き、5点満点中4.6点と、お陰様で評判も良いようです。よろしければどうぞ。(画像をクリックするとUdemy.comにジャンプします。)
UNIONもできるBIツール、Tableauを勉強したい方はこちら。
また、Looker Studioで結合ができるの知らなかったよ。という方も中にはいるかもしれません。そんなみなさんは、Looker Studioを勉強したくなってますよね。以下の画像クリックでUdemyにジャンプします。しかし、いつも思うんだけど、すごい値引きだ。^^;