LookerでBigQueryデータの複数結合やってみた!

Lookerでデータの結合をやってみました!
2022.08.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アラカツのルッ友1年生の國崎です。
クラスメソッドではルッカーを扱っている人は皆等しく友であるという思想のもと、ルッ友と呼んでいます。
私はまだルッ友なりたての1年生。
背中にランドセルを背負っているレベルです。
ランドセル

前回書いたこちらのIT初心者のLooker記事が大変好評で(自分の中で)、今回初心者向けの記事第二弾を書くことになりました。

今回はLookerの結合についてです。
あなたはLookerを使う際、こんなお悩みをお持ちじゃありませんか?

  • 3つ以上のCSVを結合してLookerで見たいがやり方がわからない!
  • BigQueryでは複数結合できるんだ!ただLookerでのやり方がわからん!
  • Lookerもっと使えるようになりてー!

そのお悩み、この記事で解決しますよ。
ということで、Lookerでの複数結合のやり方をお伝えします。

事前に今回取り扱うデータとゴールをチェック

さて、やり方をお伝えする前に今回の取り扱うデータとゴールを確認しておきましょう。
前回同様データはBigQueryにあるテーブルを使います。

BigQueryにあるデータ

①sales.csv(購買データ)

  • order_id…注文ID
  • user_id…顧客のID
  • product_id…商品のID
  • date_time…購買日時
  • quantity…購入個数
  • revenue…価格
  • is_proper…割引商品か否か

②customers.csv(ユーザーデータ)

  • user_id…顧客のID
  • name…顧客の名前
  • gender…性別
  • prefecture…都道府県
  • register_date…会員登録日
  • is_premiunm…ロイヤル会員か否か

③products.csv(商品データ)

  • product_id…商品ID
  • product_name…商品名
  • product_category…商品カテゴリー
  • cost…商品毎の原価

ゴール

男女別の商品カテゴリー別売上が分かるグラフを作る

作業前にどのデータをどう結合させるか確認

今回上記で紹介した3つのcsvを結合させるのですが、注意点として3つのcsvをどう繋ぐかを事前に確認しておきます。
Exploreをどのビューで起こすかによって結合の仕方が変わるからですね。
上の3つのデータを見ると、sales.csvがcustomers.csvとproducts.csvにそれぞれ以下のように繋げる値を持っていることがわかりますので、sales.csvを元にexploreを作成することに決めます。

  • sales.user_id = customers.user_id
  • sales.product_id = products.product_id

ちなみにこの3つのCSVをBigQueryのクエリで結合するときは以下のように書きます。
looker結合

Lookerではどのように結合するか、以下やっていきましょう。

Lookerで結合

まずはビューの作成

今回は前回書いた記事からの続きでやっていきます。
Lookerにはすでにcustomers.csvとsales.csvの連携をやっていたので、プロジェクト内にproducts.csvのビューを作成するところからの手順となります。
views→3点リーダー内のテーブルからビューを作成するをクリック。
結合2

新たに追加するBigQueryにあるproductにチェックを入れてCreate Viewsをクリック。
結合3

viewsの中にproductが追加されました。
結合4

続いてモデルの作成

追加したviewsを結合するためのモデルを作成します。
3点リーダー内のモデルの作成をクリック。
結合5

作成したモデル内には以下のコードを記述します。


connection: "bigquery-20220805-kunisaki"
label: "kunisaki-test"
include: "/views/*.view.lkml"     
explore:  sales {
  label: "顧客-購買-商品"
  join: customers {
    type: left_outer
    sql_on: ${customers.user_id} = ${user_id} ;;
    relationship: many_to_one
  }

  join: product {
    type: left_outer
    sql_on: ${product.product_id} = ${sales.product_id} ;;
    relationship: many_to_one
  }

}

書いてみるとなんちゃないコードですが、relationshipのところが要注意ですね。
結合するデータとの関係性を見て、
many_to_oneか
many_to_manyか
one_to_oneか
one_to_manyか

をきちんと記述しないといけません。

Exploreでグラフの表示

Exploreに移動しモデルで書いたラベルの検索をします。
すると上記コードで書いた顧客-購買-商品が確認できるのでそちらをクリック。
結合6

今回のゴールは男女別の商品カテゴリー別売上が分かるグラフを作るなので、Product Category(商品別カテゴリー)とGender(性別)とTotal Revenue(合計売上)にチェックを入れ実行をします。
結合7

ご覧のように男女別の商品カテゴリー別売上の可視化ができました。
ここまでできたら晴れてルッ友2年生ってところでしょうか。
何年生まであるか知らんけど。