Lookerで箱ひげ図(ボックスプロット)を作成する #Looker

2023.10.06

Looker勉強中のikumiです。今回は、Lookerで箱ひげ図を作成してみましたので、その手順について記載していきます。

箱ひげ図って?

箱ひげ図は、データの分布を確認したいときに使用します。平均値だけでなくデータのばらつきを確認することで、データの特長を把握したり、外れ値などを確認できます。また、データの分布の確認はヒストグラムで表せることが多いですが、箱ひげ図を使用すると複数の軸の分布を同時に確認できる点がメリットとなります。

想定ユースケース

今回は、事前定義されたLTV購入金額層ごとの、購入商品の単価の分布を算出してみます

やってみる

Viewファイルでメジャーを準備

  • Lookerで箱ひげ図を作成する場合は、グラフの要素となる5つのメジャーを作る必要があります
    • 最小値
    • 25%のデータ
    • 中央値
    • 75%のデータ
    • 最大値
  • そのため、以下の通りViewファイルを定義しました
# 分析軸となるディメンションを定義
dimension: lifetime_revenue {
    label: "ライフタイムレベニュー"
    type: number
    value_format_name: usd
    sql: ${TABLE}.lifetime_revenue ;;
  }

  dimension: lifetime_revenue_tier {
    label: "ライフタイムレベニュー層"
    type: tier
    tiers: [0, 25, 50, 100, 200, 500, 1000]
    sql: ${lifetime_revenue} ;;
    style: integer
  }

# 集計元の数値フィールド
dimension: retail_price {
    label: "小売価格"
    type: number
    sql: ${TABLE}.retail_price ;;
  }

# 箱ひげ図用のメジャーを作成
measure: min_average_price {
    label: "単価(最小)"
    type: min
    sql: ${retail_price} ;;
  }

  measure: max_average_price {
    label: "単価(最大)"
    type: max
    sql: ${retail_price} ;;
  }

  measure: median_average_price {
    label: "単価(中央値)"
    type: median
    sql: ${retail_price} ;;
  }

  measure: 25_average_price {
    label: "単価(25%)"
    type: percentile
    percentile: 25
    sql: ${retail_price} ;;
  }

  measure: 75_average_price {
    label: "単価(75%)"
    type: percentile
    percentile: 75
    sql: ${retail_price} ;;
  }

Exploreでビジュアライゼーションの作成

  • まずはフィールドピッカーから必要なフィールドを選択します
  • この際、メジャーの表示順が左から最小→25%→中央値→75%→最大になるように調整します

  • ビジュアライゼーションタブで箱ひげ図を選択

  • これで箱ひげ図の完成です
    • この結果から、LTV金額が高いユーザーも平均して単価の高いものを買っているわけではない(=購入回数が多い)が、一部単価の高いものを買ってLTV金額が上がっているユーザーもいる。ということがわかりました
  • オプションで色の変更や、メモリの調整も可能です

参考:(公式Doc)ボックスプロット

さいごに

Lookerでの箱ひげ図は、メジャーをすべて自身で用意する必要があるので少し難易度が高いように思いますが、ビジュアライゼーションの作成自体は簡単にできました。また外れ値の設定などが難しいため、非常にシンプルな箱ひげ図になっていました。今後も色々なビジュアライズを試してみたいと思います。