FirebaseのデータをBigQuery経由でTableauと連携させてみた

2019.11.29

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

はじめに

こんにちは。モバイルアプリの運用を担当しているkobayashiです。クラスメソッド に入ってから色々と職種が変わりまして、今はモバイルアプリの分析やグロースを担当しております。

本日は、Firebaseで取得したイベントをBigQuery経由でTableauに連携させてみたいと思います。Firebaseのイベントにプロパティを付けている人が多いと思うので、その想定で書いていきます。

前提

釈迦に説法かもしれませんが一応前提を整理しておきます。

  • Firebaseで取得したデータを直接Tableauに連携させることはできない
    • 今回はBigQuery経由で行います
    • GoogleAnalyticsはできる
  • BigQueryを利用すると課金される可能性がある
    • BigQueryの料金
    • FirebaseからBigQueryへのデータ送信はストリーミング挿入です
  • Firebaseで取得したデータをBigQueryに送るためにはFirebaseとBigQueryの連携が必要

手順

FirebaseからBigQueryに送ったデータをBigQueryで整形する

TableauとBigQueryをそのまま連携すると、Tableau側で次のようなエラーが出ました。

Google BigQuery サービスがクエリをコンパイルできませんでした。

Cannot access field key on a value with type ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [1:1576]

BigQueryでは、Fireabseのイベントのプロパティデータが一行ずつではなく構造体となって格納されています。UNNEST関数を使い、BigQueryでTableau連携用のテーブルを作ります。UNNEST関数がなぜ必要なのかについてはこちらの説明がわかりやすいです→ BigQuery 活用術: UNNEST 関数

CREATE TABLE
 データセット名.連携用テーブル名
AS
 (
  SELECT
   event_date,
   event_name,
   (SELECT value.string_value FROM UNNEST(event_params) ) AS properties
   FROM 
  プロジェクト名.データセット名.テーブル名
 )
 ;

これで、データが一行ずつのテーブルが作成され、Tableauで使える形式になりました。

Tableauで接続先にBigQueryを選ぶ

Tableauを開いて、接続先にGoogle BigQueryを選びます。

Googleにログインする

Googleへのログインを求められるので、BigQueryを使っているアカウントと同じアカウントでログインします。

TableauとBigQueryの連携を許可する

TableauとBigQueryの連携を許可します。連携されると、「Tableauでこのウィンドウを作成し、認証しました。これで安全に閉じることができます。」というメッセージのブラウザが開きます。

請求プロジェクト,プロジェクト,データセットを指定する

使用したいテーブルの請求プロジェクト,プロジェクト,データセットを指定すると「表」の部分にテーブル名が表示されます。

表をドラッグして更新する

「ここまで表をドラッグ」に表(テーブル)をドラッグして「今すぐ更新」ボタンを押すとデータが連携されます

さいごに

FirebaseのデータをBigQueryに送って使う時にはUNNEST関数がよく登場しそうです。