読者です 読者をやめる 読者になる 読者になる

VASILYにおけるBigQuery + Tableau活用例

こんにちは! なんでもディープラーニングでやりたがる癖が抜けず、3ヶ月のディープラーニング禁止令を言い渡されていた後藤です。

本記事ではVASILYで利用しているデータ分析の環境について紹介します。 VASILYではデータ分析が必要な場面で、BigQueryとTableauを組み合わせて利用することが多いため、これらの実際の活用例とTableauの選定理由について紹介したいと思います。

以前、CTOがデータ周りの環境の全体像を紹介しました。 tech.vasily.jp

社内ではBigQueryを中心にデータ周りの環境が構築されており、そこからデータ活用のあらゆる業務へつながります。 データの可視化と社内への共有は主にTableauを使っています。 まずは、BigQueryとTableauの説明から始めます。

BigQuery とは

BigQueryとは、Googleが提供しているデータウェアハウスです。 BigQueryは強力なコンピュータリソースを使って、ギガスケールの巨大なテーブルの集計や結合を数秒〜数十秒で安価に行うことができます。VASILYでは、マスターデータやアクセスログ、クローラーのログなど、あらゆるデータがBigQueryに同期され、分析に必要なデータはBigQueryにクエリを投げることで取得できるようになっています。

VASILYにおけるBigQueryへのデータの同期方法は、前回のブログで軽く触れています。詳細については後日公開する予定です。

tech.vasily.jp

Tableau とは

Tableauは、様々な形式のデータソースから必要なデータを抽出し、ドラッグ&ドロップなどの簡単な操作のみで、データの可視化が素早く行えるBIツールです。VASILYでは、分析やダッシュボードの作成を行うデータサイエンティストがTableau Desktopを使い、ダッシュボードの閲覧がメインの他のメンバーにはTableau Serverでの閲覧権限を発行する、というように使い分けています。

Tableau Desktop

デスクトップにインストールするタイプのTableauです。BigQueryにクエリを投げたり、ローカルのcsvファイルを開いて手軽に分析を始めることができます。 大きなデータの集計をBigQueryに任せてしまえば、これを導入するだけでデータを可視化できる便利な分析環境が整います。

Tableau Server

Tableau Desktopで作成したダッシュボードをTableau Serverにパブリッシュすることで、ブラウザ上で閲覧できるようになります。他部署への情報共有はTableau Server上で行います。ほかにもクラウド上で完結するTableau Onlineや作ったダッシュボードを一般に公開できるTableau Publicなどがあります。

BigQuery + Tableauの活用例

BigQueryの強力な集計機能とTableauによる直感的な操作による可視化により、データ分析の時間が大幅に削減されます。 この2つを組み合わせたツールをVASILYでは以下のような場面で活用します。

  • 探索的データ解析
  • 仮説検証
  • KPIの監視や施策の効果測定
  • データの集計と共有

VASILYにとって貢献度の高かったBigQuery + Tableauの活用例を紹介します。 一部のviewに関してはTableau publicに公開し、Tableauでデータを探索する雰囲気を感じられるようにしました。

データのスライシング

IQONのコーディネートに付けられたタグとコーディネートに使われたブランドの関係を期間別に把握したいという要望があった場合、以下のようなダッシュボードを作成します。複数のディメンジョンのあるデータを一枚の図で可視化することは難しいですが、Tableauであれば以下のようなダッシュボードによってインタラクティブにグラフを操作することができます。

このダッシュボードを使うことで、「ガーリー」というタグが使われたコーデに、どのようなブランドのアイテムが使われているのかをひと目で把握することができます。逆に、各ブランドはどのようなタグのコーディネートに使われる傾向にあるかを把握するためのダッシュボードも同様に作ることができます。このようなダッシュボードがあれば、営業的にはこれらの知識をいつでも引き出すことができ話題のタネとなりますし、データサイエンティスト的にはデータの傾向を大まかに把握することで、どんな分布を持っているか、どんなモデリングできそうか、どのような前処理が必要か、などの判断ができるようになります。調べたい仮説がある場合も、すばやく答えに行き着くことができます。

BigQueryの課金状況を可視化

以下のダッシュボードは各チームが日毎にどれくらいの価格のクエリを発行しているのかを可視化したものです。BigQueryは従量課金制であるため、下手なクエリを投げ続けると無駄な課金が発生してしまいます。このようなダッシュボードで調査することで、無駄なクエリを発行しているかどうかを把握することができます。

f:id:vasilyjp:20170414185921p:plain

以下のダッシュボードは、クエリ毎の料金を面積の大きさで表現したものです。BigQueryの課金額を個人ごとに突き詰めていきます。誰がいくら分使い、それが全体のどれくらいの割合を占めるのかを把握することで、節約意識が芽生えるとともに、明らかに無駄なクエリを指摘することができるようになります。ここで問題になったクエリは精査され、テーブルを読み出す回数を減らす工夫をしたり、不要な列を読まないようにすることでコストカットを目指します。

f:id:vasilyjp:20170414190520p:plain

アクセス数の分布

アクセス数の規模を面積の大きさに、アクセスあたりの利益を色の濃度にして可視化した例です。このダッシュボードにより、どの項目がアクセスの規模の割に効率的に利益を生み出しているのかがひと目でわかります。例えば、図の白い部分は、利益を生み出していない項目です。この面積が大きい場合、アクセスの割に利益を生み出していないことを意味します。現状の問題点や打ち手を考えるきっかけとなるダッシュボードなので重宝しています。

f:id:vasilyjp:20170412160423p:plain

現在、VASLYではこのようなダッシュボードが200以上作られ、刻々と変化するVASILYの重要な指標を把握できるようになっています。

Tableauを選んだ理由

様々な場面で利用しているTableauですが、より安価に同じ機能を実現できるツールがないかを調査してみました。より安価になりそうなBIツールとしては以下のものが候補にあがりました。

  • re:dash
  • exploratory
  • google data studio
  • Power BI
  • Quick Sight
  • Superset

候補の中からVASILYの環境にあるものを改めて調査した結果、結局Tableauがよいという結論になりました。VASILYが重視している要素は「BigQueryとの連携ができる」「バグが少ない」「探索的データ解析ができる」ことです。

BigQueryと連携ができる

VASILYのデータ周りの環境はTableauを抜きにしてもBigQueryが欠かせません。アイテムやブランドのレコメンドやランキング、類似画像検索を実現する上でもBigQueryを活用しています。可視化したいデータもサイズが大きい場合が多いので、BigQueryの強力な集計機能を利用したいです。 上記のリストの中では、BigQueryとの連携ができるものとして、Tableau、re:dash、Exploratory、Google Data Studioなどが挙げられます。 一方で、PowerBI, QuickSight, SupersetなどはBigQueryが利用できないため、候補から外しました。

バグが少ない

意思決定に使う分析結果は間違っていないことと常に動き続けることが不可欠です。 BigQueryとの連携がお手軽なre:dashは、OSSでバグが多めということもあり今回は候補から外しました。 また、これはバグではありませんが、ExploratoryとGoogle Data StudioはTableauと同じ感覚で大きなデータを渡すと動かなくなる場面が多く、候補から外しました。

探索的データ解析がしやすい

Tableauも簡単な探索的データ解析であればゴリゴリ進めることができますが、このリストのなかではExploratoryも使いやすいです。Rがベースになっているだけあって高機能で、UIからk-means clusteringのようなアルゴリズムも走らせることができます。VASILYではそこまでの高度な解析が必要になる場合、Jupyter Notebookを使います。

運用

BigQuery + Tableauの組み合わせで分析業務を回して、1年以上経ちます。その中で得られた運用の知見を述べます。

ダッシュボードの乱立を防ぐ

Tableauを使うと、あまりにも手軽にviewが作れるため、他部署からたくさんの依頼が来るようになりました。我々も必要だと思い、ダッシュボードを大量に作りましたが、結局閲覧されないダッシュボードも乱立してしまい、かけた時間が無駄になることがありました。そこで、作成前にダッシュボードの必要性をデータチームで検討し、本当に知りたいことはなにか、かける時間に対して価値のあるダッシュボードになるかどうかをディスカッションしてから作り始めるようにしました。他部署の作業時間を大幅に減らせる見込みのあるダッシュボードのみを作成するようにしています。いまでは無駄なダッシュボードは一切作られず、データチームがダッシュボード作成にかける時間も減りました。

定期的に見るものはSlackに投稿する

業務に関係のある数値は日頃から追う必要がありますが、毎日Tableau Serverにアクセスしてチェックするのは負担です。そこで、重要な指標は自動的にSlackに投稿し強制的に目に触れるようにしています。毎日ほぼ強制的に数値を閲覧させられるため、大体の数値の感覚と、前日までの状態の良し悪しがわかるようになります。会社の飲み会で行ったクイズ大会で、KPIを答えさせる問題が出題されましたが見事に全員が答えられており、成果は出ていると感じています。

迷ったらサポートに聞く

保守費用を払っているため、カスタマーサポートを利用することができます。作業中にバグが出て作業が進まない場合は、悩まずにサポートに連絡して対応してもらいます。早ければその日のうちに回答がもらえ、なにかしらの行動が取れるようになります。

テクニックは先人に学ぶ

Tableauをマスターし自在に使いこなせる人々のことをTableau Jediと呼ぶそうです。こちらからJedi達による美しいダッシュボードが閲覧&ダウンロードすることができます。public.tableau.com

ダッシュボード作成の際、やりたい操作が見つからない場合は、Tableau communityに質問を投げかけると、上級者がサンプルを作って見せてくれることもあります。かつて似たような問題に困っていた人の知見なども集められており、参考にすることが多いです。

最後に

VASILYには分析しきれていない面白いデータが大量に眠っています。 我こそは思った方、データサイエンティストとして我々と切磋琢磨しませんか?