FirebaseのデータをBigQuery経由でTableauと連携させてみた
はじめに
こんにちは。モバイルアプリの運用を担当しているkobayashiです。クラスメソッド に入ってから色々と職種が変わりまして、今はモバイルアプリの分析やグロースを担当しております。
本日は、Firebaseで取得したイベントをBigQuery経由でTableauに連携させてみたいと思います。Firebaseのイベントにプロパティを付けている人が多いと思うので、その想定で書いていきます。
前提
釈迦に説法かもしれませんが一応前提を整理しておきます。
- Firebaseで取得したデータを直接Tableauに連携させることはできない
- 今回はBigQuery経由で行います
- GoogleAnalyticsはできる
- BigQueryを利用すると課金される可能性がある
- BigQueryの料金
- FirebaseからBigQueryへのデータ送信はストリーミング挿入です
- Firebaseで取得したデータをBigQueryに送るためにはFirebaseとBigQueryの連携が必要
- Firebase を BigQuery にリンクする
- 初回はデータ到着までに1日くらいかかります
手順
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関数がよく登場しそうです。